{"id":"d0e7de9c-ca22-4a24-a00a-98fb965f7a6d","entityType":"agent","slug":"clawhub-534422530-laosi-data-analyzer","name":"Data Analyzer Pro","canonicalUrl":"https://www.xpersona.co/agent/clawhub-534422530-laosi-data-analyzer","canonicalPath":"/agent/clawhub-534422530-laosi-data-analyzer","generatedAt":"2026-10-11T16:02:45.506Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-11T13:53:51.814Z","emptyReason":null},"description":"数据分析 - 加载CSV/JSON自动计算统计描述(均�?中位�?标准�?极�?，异常检测，趋势分析，结果本地持久化 Skill: Data Analyzer Pro Owner: 534422530 Summary: 数据分析 - 加载CSV/JSON自动计算统计描述(均�?中位�?标准�?极�?，异常检测，趋势分析，结果本地持久化 Tags: analysis:2.0.0, data:2.0.0, latest:2.0.0, pro:2.0.0, productivity:1.0.0, statistics:2.0.0, visualization:2.0.0 Version history: v2.0.0 | 2026-05-29T23:31:39.130Z | auto laosi-data-analyzer 2.0.0 adds premium status and metadata. - Added a \"premium\" badge to indicate enhanced or premium features. - Intro","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.1K downloads reported by the source. Last updated 10/11/2026.","installCommand":"clawhub skill install s170k9770tgh0506hw0dwtb6pd83kwyq:laosi-data-analyzer","sourceUrl":"https://clawhub.ai/534422530/laosi-data-analyzer","homepage":"https://clawhub.ai/534422530/skills/laosi-data-analyzer","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/534422530/laosi-data-analyzer","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/534422530/skills/laosi-data-analyzer","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":60,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"数据分析 - 加载CSV/JSON自动计算统计描述(均�?中位�?标准�?极�?，异常检测，趋势分析，结果本地持久化 Skill: Data Analyzer Pro Owner: 534422530 Summary: 数据分析 - 加载CSV/JSON自动计算统计描述(均�?中位�?标准�?极�?，异常检测，趋势分析"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-11T13:53:51.814Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T13:53:51.814Z","emptyReason":null},"stars":null,"forks":null,"downloads":1054,"packageName":null,"latestVersion":"2.0.0","tractionLabel":"1.1K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T13:53:51.786Z","emptyReason":null},"lastUpdatedAt":"2026-10-11T13:53:51.814Z","lastCrawledAt":"2026-10-11T13:53:51.786Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-12T13:53:51.786Z","lastVerifiedAt":null,"highlights":[{"version":"2.0.0","createdAt":"2026-05-29T23:31:39.130Z","changelog":"laosi-data-analyzer 2.0.0 adds premium status and metadata. - Added a \"premium\" badge to indicate enhanced or premium features. - Introduced a new hub.json file for better integration and metadata management. - Updated SKILL.md metadata (version bump, premium badge). - No major functional/code changes to data analysis logic noted in this update.","fileCount":4,"zipByteSize":4621},{"version":"1.0.0","createdAt":"2026-05-29T00:47:27.168Z","changelog":"Initial release of laosi-data-analyzer. - Supports loading and parsing CSV/JSON data - Automatically computes statistical descriptions: mean, median, standard deviation, min/max - Includes outlier detection (IQR/z-score) and trend analysis - Generates correlations between numeric columns - Saves analysis results locally as JSON - Suitable for business reports, A/B testing, data quality checks, and trend monitoring","fileCount":3,"zipByteSize":4284}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s170k9770tgh0506hw0dwtb6pd83kwyq:laosi-data-analyzer","setupComplexity":"low","setupSteps":["Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-534422530-laosi-data-analyzer/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-534422530-laosi-data-analyzer/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-534422530-laosi-data-analyzer/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-534422530-laosi-data-analyzer/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-534422530-laosi-data-analyzer/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-534422530-laosi-data-analyzer/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-11T16:02:45.505Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-534422530-laosi-data-analyzer/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-534422530-laosi-data-analyzer/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-534422530-laosi-data-analyzer/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-534422530-laosi-data-analyzer/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-11T13:53:51.814Z","emptyReason":null},"readme":"Skill: Data Analyzer Pro\n\nOwner: 534422530\n\nSummary: 数据分析 - 加载CSV/JSON自动计算统计描述(均�?中位�?标准�?极�?，异常检测，趋势分析，结果本地持久化\n\nTags: analysis:2.0.0, data:2.0.0, latest:2.0.0, pro:2.0.0, productivity:1.0.0, statistics:2.0.0, visualization:2.0.0\n\nVersion history:\n\nv2.0.0 | 2026-05-29T23:31:39.130Z | auto\n\nlaosi-data-analyzer 2.0.0 adds premium status and metadata.\n\n- Added a \"premium\" badge to indicate enhanced or premium features.\n- Introduced a new hub.json file for better integration and metadata management.\n- Updated SKILL.md metadata (version bump, premium badge).\n- No major functional/code changes to data analysis logic noted in this update.\n\nv1.0.0 | 2026-05-29T00:47:27.168Z | auto\n\nInitial release of laosi-data-analyzer.\n\n- Supports loading and parsing CSV/JSON data\n- Automatically computes statistical descriptions: mean, median, standard deviation, min/max\n- Includes outlier detection (IQR/z-score) and trend analysis\n- Generates correlations between numeric columns\n- Saves analysis results locally as JSON\n- Suitable for business reports, A/B testing, data quality checks, and trend monitoring\n\nArchive index:\n\nArchive v2.0.0: 4 files, 4621 bytes\n\nFiles: hub.json (590b), skill-card.md (1919b), SKILL.md (7170b), _meta.json (138b)\n\nFile v2.0.0:SKILL.md\n\n---\nbadge: premium\nname: data-analyzer\nversion: 2.0.0\ndescription: 数据分析 - 加载CSV/JSON自动计算统计描述(均�?中位�?标准�?极�?，异常检测，趋势分析，结果本地持久化\ntags: [data, analysis, statistics, visualization, productivity]\nauthor: laosi\nsource: original\n---\n\n# Data Analyzer - 数据分析引擎\n\n> 激活词: 分析数据 / data analyze / 统计\n\n## 功能\n\n- CSV/JSON 数据加载解析\n- 自动统计描述：均值、中位数、标准差、极�?- 异常值检测（IQR/z-score�?- 趋势判断（上�?下降/波动�?- 结果保存到本�?JSON\n\n## Python 实现\n\n```python\nimport csv, json, statistics, math\nfrom datetime import datetime\nfrom typing import List, Dict, Any\n\nclass DataAnalyzer:\n    def __init__(self):\n        self.data: List[Dict[str, Any]] = []\n        self.numeric_cols: List[str] = []\n    \n    def load_csv(self, path: str, delimiter: str = \",\") -> int:\n        \"\"\"从CSV加载数据\"\"\"\n        with open(path, newline=\"\", encoding=\"utf-8\") as f:\n            reader = csv.DictReader(f, delimiter=delimiter)\n            self.data = list(reader)\n        self._detect_numeric()\n        return len(self.data)\n    \n    def load_json(self, path: str) -> int:\n        \"\"\"从JSON加载数据（支持列表和记录列表�?\"\"\n        with open(path, encoding=\"utf-8\") as f:\n            raw = json.load(f)\n        if isinstance(raw, list):\n            self.data = raw\n        elif isinstance(raw, dict):\n            # 尝试找到第一个列表字�?            for v in raw.values():\n                if isinstance(v, list):\n                    self.data = v\n                    break\n        self._detect_numeric()\n        return len(self.data)\n    \n    def _detect_numeric(self):\n        \"\"\"自动检测数值列\"\"\"\n        if not self.data:\n            return\n        for col in self.data[0]:\n            try:\n                float(self.data[0][col])\n                self.numeric_cols.append(col)\n            except (ValueError, TypeError):\n                pass\n    \n    def describe(self, col: str) -> dict:\n        \"\"\"数值列的统计描�?\"\"\n        if col not in self.numeric_cols:\n            return {\"error\": f\"'{col}' is not numeric\"}\n        vals = [float(r[col]) for r in self.data if r.get(col)]\n        \n        n = len(vals)\n        mean = statistics.mean(vals)\n        median = statistics.median(vals)\n        stdev = statistics.stdev(vals) if n > 1 else 0\n        \n        # 异常检�?(IQR方法)\n        sorted_vals = sorted(vals)\n        q1 = sorted_vals[n // 4]\n        q3 = sorted_vals[3 * n // 4]\n        iqr = q3 - q1\n        lower = q1 - 1.5 * iqr\n        upper = q3 + 1.5 * iqr\n        outliers = [v for v in vals if v < lower or v > upper]\n        \n        # 趋势判断\n        half = n // 2\n        first_half = statistics.mean(vals[:half]) if half > 0 else mean\n        second_half = statistics.mean(vals[half:]) if half > 0 else mean\n        trend = \"up\" if second_half > first_half * 1.05 else \"down\" if second_half < first_half * 0.95 else \"stable\"\n        \n        return {\n            \"column\": col,\n            \"count\": n,\n            \"mean\": round(mean, 2),\n            \"median\": round(median, 2),\n            \"stdev\": round(stdev, 2),\n            \"min\": round(min(vals), 2),\n            \"max\": round(max(vals), 2),\n            \"range\": round(max(vals) - min(vals), 2),\n            \"q1\": round(q1, 2),\n            \"q3\": round(q3, 2),\n            \"iqr\": round(iqr, 2),\n            \"outliers\": len(outliers),\n            \"outlier_values\": [round(v, 2) for v in outliers[:10]],\n            \"trend\": trend,\n        }\n    \n    def correlation(self, col1: str, col2: str) -> float:\n        \"\"\"Pearson相关系数\"\"\"\n        if col1 not in self.numeric_cols or col2 not in self.numeric_cols:\n            return None\n        pairs = [(float(r[col1]), float(r[col2])) for r in self.data\n                 if r.get(col1) and r.get(col2)]\n        n = len(pairs)\n        if n < 3:\n            return None\n        sum_x = sum(p[0] for p in pairs)\n        sum_y = sum(p[1] for p in pairs)\n        sum_xy = sum(p[0] * p[1] for p in pairs)\n        sum_x2 = sum(p[0] ** 2 for p in pairs)\n        sum_y2 = sum(p[1] ** 2 for p in pairs)\n        num = n * sum_xy - sum_x * sum_y\n        den = math.sqrt((n * sum_x2 - sum_x ** 2) * (n * sum_y2 - sum_y ** 2))\n        return round(num / den, 3) if den else 0\n    \n    def report(self, output: str = None) -> dict:\n        \"\"\"完整分析报告\"\"\"\n        report = {\n            \"rows\": len(self.data),\n            \"columns\": list(self.data[0].keys()) if self.data else [],\n            \"numeric_columns\": self.numeric_cols,\n            \"statistics\": {col: self.describe(col) for col in self.numeric_cols},\n            \"timestamp\": datetime.now().isoformat(),\n        }\n        # 相关性矩�?        if len(self.numeric_cols) >= 2:\n            report[\"correlations\"] = {}\n            for i, c1 in enumerate(self.numeric_cols):\n                for c2 in self.numeric_cols[i+1:]:\n                    corr = self.correlation(c1, c2)\n                    if corr is not None:\n                        report[\"correlations\"][f\"{c1}_vs_{c2}\"] = corr\n        \n        if output:\n            with open(output, \"w\", encoding=\"utf-8\") as f:\n                json.dump(report, f, ensure_ascii=False, indent=2)\n        return report\n\n# 使用示例\nanalyzer = DataAnalyzer()\n\n# 模拟数据\nsample_data = [\n    {\"date\": \"2026-05-01\", \"revenue\": 1200, \"users\": 45, \"conversion\": 0.12},\n    {\"date\": \"2026-05-02\", \"revenue\": 1350, \"users\": 52, \"conversion\": 0.14},\n    {\"date\": \"2026-05-03\", \"revenue\": 1100, \"users\": 38, \"conversion\": 0.11},\n    {\"date\": \"2026-05-04\", \"revenue\": 1600, \"users\": 61, \"conversion\": 0.13},\n    {\"date\": \"2026-05-05\", \"revenue\": 900,  \"users\": 30, \"conversion\": 0.09},\n    {\"date\": \"2026-05-06\", \"revenue\": 1450, \"users\": 55, \"conversion\": 0.15},\n    {\"date\": \"2026-05-07\", \"revenue\": 1300, \"users\": 48, \"conversion\": 0.11},\n]\nanalyzer.data = sample_data\nanalyzer._detect_numeric()\n\n# 描述统计\ndesc = analyzer.describe(\"revenue\")\nprint(f\"营收: 均�?{desc['mean']}, 中位�?{desc['median']}, 趋势={desc['trend']}\")\nprint(f\"异常�? {desc['outliers']}�?)\n\n# 相关�?corr = analyzer.correlation(\"revenue\", \"users\")\nprint(f\"营收-用户 相关系数: {corr}\")\n\n# 完整报告\nreport = analyzer.report(\"analysis_results.json\")\nprint(f\"分析完成: {report['rows']}条记�? {len(report['statistics'])}个数值列\")\n```\n\n## 输出示例\n\n```json\n{\n  \"rows\": 7,\n  \"columns\": [\"date\", \"revenue\", \"users\", \"conversion\"],\n  \"statistics\": {\n    \"revenue\": {\n      \"mean\": 1271.43,\n      \"median\": 1300.0,\n      \"stdev\": 239.05,\n      \"min\": 900,\n      \"max\": 1600,\n      \"trend\": \"stable\"\n    }\n  },\n  \"correlations\": {\n    \"revenue_vs_users\": 0.985,\n    \"revenue_vs_conversion\": 0.672\n  }\n}\n```\n\n## 使用场景\n\n1. **业务报表**: 月度/周度运营数据自动分析\n2. **A/B测试**: 实验组vs对照组的关键指标对比\n3. **数据质量**: 异常值检测发现数据采集问�?4. **趋势监控**: 连续跟踪指标变化方向\n\n## 依赖\n\n- Python 3.8+\n- 标准库（csv, json, statistics, math�?\n\nFile v2.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn71pk44ca87scz3pstt90r66n80xhaa\",\n  \"slug\": \"laosi-data-analyzer\",\n  \"version\": \"2.0.0\",\n  \"publishedAt\": 1780097499130\n}\n\nFile v2.0.0:skill-card.md\n\n## Description:\n\nData Analyzer Pro helps an agent load CSV or JSON datasets, compute descriptive statistics, detect outliers, assess trends, calculate correlations, and persist analysis results as JSON.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[534422530](https://clawhub.ai/user/534422530)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers, analysts, and business users can use this skill to analyze structured CSV or JSON data for summaries, outliers, trends, and correlations. It is suitable for operational reports, A/B test review, data-quality checks, and metric monitoring.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Report output paths can overwrite arbitrary writable local files when a filename is supplied.\n\nMitigation: Use only explicit trusted output paths, keep generated reports in a dedicated directory, and confirm before overwriting existing files.\n\nRisk: Broad activation or manifest disclosures may invoke the skill in contexts where local file writes are not expected.\n\nMitigation: Avoid broad auto-invocation and review the intended dataset and output path before use.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/534422530/skills/laosi-data-analyzer)\n\n## Skill Output:\n\n**Output Type(s):** [text, code, JSON, files]\n\n**Output Format:** [Markdown guidance with Python code examples and optional JSON report files]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Reports may be written to a user-supplied local output path.]\n\n## Skill Version(s):\n\n2.0.0 (source: server release, SKILL.md frontmatter, hub.json)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v2.0.0:hub.json\n\n{\r\n    \"description\":  \"Premium version with full implementation, examples, and enterprise support\",\r\n    \"minOpenClawVersion\":  \"1.2.0\",\r\n    \"version\":  \"2.0.0\",\r\n    \"tags\":  [\r\n                 \"data\",\r\n                 \"analysis\",\r\n                 \"statistics\",\r\n                 \"visualization\",\r\n                 \"pro\"\r\n             ],\r\n    \"author\":  \"laosi\",\r\n    \"name\":  \"data-analyzer\",\r\n    \"pricing\":  {\r\n                    \"price\":  3900,\r\n                    \"model\":  \"one-time\"\r\n                },\r\n    \"license\":  \"MIT\",\r\n    \"displayName\":  \"Data Analyzer Pro\"\r\n}\n\nArchive v1.0.0: 3 files, 4284 bytes\n\nFiles: skill-card.md (2189b), SKILL.md (7177b), _meta.json (138b)\n\nFile v1.0.0:SKILL.md\n\n---\nname: data-analyzer\nversion: 1.0.0\ndescription: 数据分析 - 加载CSV/JSON自动计算统计描述(均值/中位数/标准差/极值)，异常检测，趋势分析，结果本地持久化\ntags: [data, analysis, statistics, visualization, productivity]\nauthor: laosi\nsource: original\n---\n\n# Data Analyzer - 数据分析引擎\n\n> 激活词: 分析数据 / data analyze / 统计\n\n## 功能\n\n- CSV/JSON 数据加载解析\n- 自动统计描述：均值、中位数、标准差、极值\n- 异常值检测（IQR/z-score）\n- 趋势判断（上升/下降/波动）\n- 结果保存到本地 JSON\n\n## Python 实现\n\n```python\nimport csv, json, statistics, math\nfrom datetime import datetime\nfrom typing import List, Dict, Any\n\nclass DataAnalyzer:\n    def __init__(self):\n        self.data: List[Dict[str, Any]] = []\n        self.numeric_cols: List[str] = []\n    \n    def load_csv(self, path: str, delimiter: str = \",\") -> int:\n        \"\"\"从CSV加载数据\"\"\"\n        with open(path, newline=\"\", encoding=\"utf-8\") as f:\n            reader = csv.DictReader(f, delimiter=delimiter)\n            self.data = list(reader)\n        self._detect_numeric()\n        return len(self.data)\n    \n    def load_json(self, path: str) -> int:\n        \"\"\"从JSON加载数据（支持列表和记录列表）\"\"\"\n        with open(path, encoding=\"utf-8\") as f:\n            raw = json.load(f)\n        if isinstance(raw, list):\n            self.data = raw\n        elif isinstance(raw, dict):\n            # 尝试找到第一个列表字段\n            for v in raw.values():\n                if isinstance(v, list):\n                    self.data = v\n                    break\n        self._detect_numeric()\n        return len(self.data)\n    \n    def _detect_numeric(self):\n        \"\"\"自动检测数值列\"\"\"\n        if not self.data:\n            return\n        for col in self.data[0]:\n            try:\n                float(self.data[0][col])\n                self.numeric_cols.append(col)\n            except (ValueError, TypeError):\n                pass\n    \n    def describe(self, col: str) -> dict:\n        \"\"\"数值列的统计描述\"\"\"\n        if col not in self.numeric_cols:\n            return {\"error\": f\"'{col}' is not numeric\"}\n        vals = [float(r[col]) for r in self.data if r.get(col)]\n        \n        n = len(vals)\n        mean = statistics.mean(vals)\n        median = statistics.median(vals)\n        stdev = statistics.stdev(vals) if n > 1 else 0\n        \n        # 异常检测 (IQR方法)\n        sorted_vals = sorted(vals)\n        q1 = sorted_vals[n // 4]\n        q3 = sorted_vals[3 * n // 4]\n        iqr = q3 - q1\n        lower = q1 - 1.5 * iqr\n        upper = q3 + 1.5 * iqr\n        outliers = [v for v in vals if v < lower or v > upper]\n        \n        # 趋势判断\n        half = n // 2\n        first_half = statistics.mean(vals[:half]) if half > 0 else mean\n        second_half = statistics.mean(vals[half:]) if half > 0 else mean\n        trend = \"up\" if second_half > first_half * 1.05 else \"down\" if second_half < first_half * 0.95 else \"stable\"\n        \n        return {\n            \"column\": col,\n            \"count\": n,\n            \"mean\": round(mean, 2),\n            \"median\": round(median, 2),\n            \"stdev\": round(stdev, 2),\n            \"min\": round(min(vals), 2),\n            \"max\": round(max(vals), 2),\n            \"range\": round(max(vals) - min(vals), 2),\n            \"q1\": round(q1, 2),\n            \"q3\": round(q3, 2),\n            \"iqr\": round(iqr, 2),\n            \"outliers\": len(outliers),\n            \"outlier_values\": [round(v, 2) for v in outliers[:10]],\n            \"trend\": trend,\n        }\n    \n    def correlation(self, col1: str, col2: str) -> float:\n        \"\"\"Pearson相关系数\"\"\"\n        if col1 not in self.numeric_cols or col2 not in self.numeric_cols:\n            return None\n        pairs = [(float(r[col1]), float(r[col2])) for r in self.data\n                 if r.get(col1) and r.get(col2)]\n        n = len(pairs)\n        if n < 3:\n            return None\n        sum_x = sum(p[0] for p in pairs)\n        sum_y = sum(p[1] for p in pairs)\n        sum_xy = sum(p[0] * p[1] for p in pairs)\n        sum_x2 = sum(p[0] ** 2 for p in pairs)\n        sum_y2 = sum(p[1] ** 2 for p in pairs)\n        num = n * sum_xy - sum_x * sum_y\n        den = math.sqrt((n * sum_x2 - sum_x ** 2) * (n * sum_y2 - sum_y ** 2))\n        return round(num / den, 3) if den else 0\n    \n    def report(self, output: str = None) -> dict:\n        \"\"\"完整分析报告\"\"\"\n        report = {\n            \"rows\": len(self.data),\n            \"columns\": list(self.data[0].keys()) if self.data else [],\n            \"numeric_columns\": self.numeric_cols,\n            \"statistics\": {col: self.describe(col) for col in self.numeric_cols},\n            \"timestamp\": datetime.now().isoformat(),\n        }\n        # 相关性矩阵\n        if len(self.numeric_cols) >= 2:\n            report[\"correlations\"] = {}\n            for i, c1 in enumerate(self.numeric_cols):\n                for c2 in self.numeric_cols[i+1:]:\n                    corr = self.correlation(c1, c2)\n                    if corr is not None:\n                        report[\"correlations\"][f\"{c1}_vs_{c2}\"] = corr\n        \n        if output:\n            with open(output, \"w\", encoding=\"utf-8\") as f:\n                json.dump(report, f, ensure_ascii=False, indent=2)\n        return report\n\n# 使用示例\nanalyzer = DataAnalyzer()\n\n# 模拟数据\nsample_data = [\n    {\"date\": \"2026-05-01\", \"revenue\": 1200, \"users\": 45, \"conversion\": 0.12},\n    {\"date\": \"2026-05-02\", \"revenue\": 1350, \"users\": 52, \"conversion\": 0.14},\n    {\"date\": \"2026-05-03\", \"revenue\": 1100, \"users\": 38, \"conversion\": 0.11},\n    {\"date\": \"2026-05-04\", \"revenue\": 1600, \"users\": 61, \"conversion\": 0.13},\n    {\"date\": \"2026-05-05\", \"revenue\": 900,  \"users\": 30, \"conversion\": 0.09},\n    {\"date\": \"2026-05-06\", \"revenue\": 1450, \"users\": 55, \"conversion\": 0.15},\n    {\"date\": \"2026-05-07\", \"revenue\": 1300, \"users\": 48, \"conversion\": 0.11},\n]\nanalyzer.data = sample_data\nanalyzer._detect_numeric()\n\n# 描述统计\ndesc = analyzer.describe(\"revenue\")\nprint(f\"营收: 均值={desc['mean']}, 中位数={desc['median']}, 趋势={desc['trend']}\")\nprint(f\"异常值: {desc['outliers']}个\")\n\n# 相关性\ncorr = analyzer.correlation(\"revenue\", \"users\")\nprint(f\"营收-用户 相关系数: {corr}\")\n\n# 完整报告\nreport = analyzer.report(\"analysis_results.json\")\nprint(f\"分析完成: {report['rows']}条记录, {len(report['statistics'])}个数值列\")\n```\n\n## 输出示例\n\n```json\n{\n  \"rows\": 7,\n  \"columns\": [\"date\", \"revenue\", \"users\", \"conversion\"],\n  \"statistics\": {\n    \"revenue\": {\n      \"mean\": 1271.43,\n      \"median\": 1300.0,\n      \"stdev\": 239.05,\n      \"min\": 900,\n      \"max\": 1600,\n      \"trend\": \"stable\"\n    }\n  },\n  \"correlations\": {\n    \"revenue_vs_users\": 0.985,\n    \"revenue_vs_conversion\": 0.672\n  }\n}\n```\n\n## 使用场景\n\n1. **业务报表**: 月度/周度运营数据自动分析\n2. **A/B测试**: 实验组vs对照组的关键指标对比\n3. **数据质量**: 异常值检测发现数据采集问题\n4. **趋势监控**: 连续跟踪指标变化方向\n\n## 依赖\n\n- Python 3.8+\n- 标准库（csv, json, statistics, math）\n\nFile v1.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn71pk44ca87scz3pstt90r66n80xhaa\",\n  \"slug\": \"laosi-data-analyzer\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1780015647168\n}\n\nFile v1.0.0:skill-card.md\n\n## Description: <br>\nLoads CSV or JSON data, computes descriptive statistics, detects outliers, identifies simple trends, calculates correlations, and can save a local JSON analysis report. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[534422530](https://clawhub.ai/user/534422530) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers, analysts, and business users use this skill to inspect local tabular datasets, summarize numeric columns, find outliers, compare correlations, and prepare lightweight JSON reports for operational analysis, A/B testing, data quality review, or trend monitoring. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Analyzing sensitive datasets can expose derived information in the agent context. <br>\nMitigation: Use the skill only with files intended for analysis and avoid loading data that should not be visible in the agent session. <br>\nRisk: Saving reports creates a local JSON file that may contain dataset summaries, correlations, and outlier values. <br>\nMitigation: Choose output paths deliberately and handle generated report files according to the dataset's sensitivity. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/534422530/laosi-data-analyzer) <br>\n- [ClawHub publisher profile](https://clawhub.ai/user/534422530) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, code, configuration, JSON files, guidance] <br>\n**Output Format:** [Markdown guidance with Python code examples and optional JSON report output] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Operates on user-provided local CSV/JSON files and may write a local JSON report when an output path is provided.] <br>\n\n## Skill Version(s): <br>\n1.0.0 (source: SKILL.md frontmatter and server release metadata) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>","readmeExcerpt":"Skill: Data Analyzer Pro Owner: 534422530 Summary: 数据分析 - 加载CSV/JSON自动计算统计描述(均�?中位�?标准�?极�?，异常检测，趋势分析，结果本地持久化 Tags: analysis:2.0.0, data:2.0.0, latest:2.0.0, pro:2.0.0, productivity:1.0.0, statistics:2.0.0, visualization:2.0.0 Version history: v2.0.0 | 2026-05-29T23:31:39.130Z | auto laosi-data-analyzer 2.0.0 adds premium status and metadata. - Added a \"premium\" badge to indicate enhanced or premium features. - Intro","codeSnippets":[],"executableExamples":[{"language":"python","snippet":"import csv, json, statistics, math\nfrom datetime import datetime\nfrom typing import List, Dict, Any\n\nclass DataAnalyzer:\n    def __init__(self):\n        self.data: List[Dict[str, Any]] = []\n        self.numeric_cols: List[str] = []\n    \n    def load_csv(self, path: str, delimiter: str = \",\") -> int:\n        \"\"\"从CSV加载数据\"\"\"\n        with open(path, newline=\"\", encoding=\"utf-8\") as f:\n            reader = csv.DictReader(f, delimiter=delimiter)\n            self.data = list(reader)\n        self._detect_numeric()\n        return len(self.data)\n    \n    def load_json(self, path: str) -> int:\n        \"\"\"从JSON加载数据（支持列表和记录列表�?\"\"\n        with open(path, encoding=\"utf-8\") as f:\n            raw = json.load(f)\n        if isinstance(raw, list):\n            self.data = raw\n        elif isinstance(raw, dict):\n            # 尝试找到第一个列表字�?            for v in raw.values():\n                if isinstance(v, list):\n                    self.data = v\n                    break\n        self._detect_numeric()\n        return len(self.data)\n    \n    def _detect_numeric(self):\n        \"\"\"自动检测数值列\"\"\"\n        if not self.data:\n            return\n        for col in self.data[0]:\n            try:\n                float(self.data[0][col])\n                self.numeric_cols.append(col)\n            except (ValueError, TypeError):\n                pass\n    \n    def describe(self, col: str) -> dict:\n        \"\"\"数值列的统计描�?\"\"\n        if col not in self.numeric_cols:\n            return {\"error\": f\"'{col}' is not numeric\"}\n        vals = [float(r[col]) for r in self.data if r.get(col)]\n        \n        n = len(vals)\n        mean = statistics.mean(vals)\n        median = statistics.median(vals)\n        stdev = statistics.stdev(vals) if n > 1 else 0\n        \n        # 异常检�?(IQR方法)\n        sorted_vals = sorted(vals)\n        q1 = sorted_vals[n // 4]\n        q3 = sorted_vals[3 * n // 4]\n        iqr = q3 - q1\n        lower = q1 - 1.5 * iqr\n        upper = q3 + 1.5 * iqr\n        outliers = [v for v in vals if v < lower or v >"},{"language":"json","snippet":"{\n  \"rows\": 7,\n  \"columns\": [\"date\", \"revenue\", \"users\", \"conversion\"],\n  \"statistics\": {\n    \"revenue\": {\n      \"mean\": 1271.43,\n      \"median\": 1300.0,\n      \"stdev\": 239.05,\n      \"min\": 900,\n      \"max\": 1600,\n      \"trend\": \"stable\"\n    }\n  },\n  \"correlations\": {\n    \"revenue_vs_users\": 0.985,\n    \"revenue_vs_conversion\": 0.672\n  }\n}"},{"language":"python","snippet":"import csv, json, statistics, math\nfrom datetime import datetime\nfrom typing import List, Dict, Any\n\nclass DataAnalyzer:\n    def __init__(self):\n        self.data: List[Dict[str, Any]] = []\n        self.numeric_cols: List[str] = []\n    \n    def load_csv(self, path: str, delimiter: str = \",\") -> int:\n        \"\"\"从CSV加载数据\"\"\"\n        with open(path, newline=\"\", encoding=\"utf-8\") as f:\n            reader = csv.DictReader(f, delimiter=delimiter)\n            self.data = list(reader)\n        self._detect_numeric()\n        return len(self.data)\n    \n    def load_json(self, path: str) -> int:\n        \"\"\"从JSON加载数据（支持列表和记录列表）\"\"\"\n        with open(path, encoding=\"utf-8\") as f:\n            raw = json.load(f)\n        if isinstance(raw, list):\n            self.data = raw\n        elif isinstance(raw, dict):\n            # 尝试找到第一个列表字段\n            for v in raw.values():\n                if isinstance(v, list):\n                    self.data = v\n                    break\n        self._detect_numeric()\n        return len(self.data)\n    \n    def _detect_numeric(self):\n        \"\"\"自动检测数值列\"\"\"\n        if not self.data:\n            return\n        for col in self.data[0]:\n            try:\n                float(self.data[0][col])\n                self.numeric_cols.append(col)\n            except (ValueError, TypeError):\n                pass\n    \n    def describe(self, col: str) -> dict:\n        \"\"\"数值列的统计描述\"\"\"\n        if col not in self.numeric_cols:\n            return {\"error\": f\"'{col}' is not numeric\"}\n        vals = [float(r[col]) for r in self.data if r.get(col)]\n        \n        n = len(vals)\n        mean = statistics.mean(vals)\n        median = statistics.median(vals)\n        stdev = statistics.stdev(vals) if n > 1 else 0\n        \n        # 异常检测 (IQR方法)\n        sorted_vals = sorted(vals)\n        q1 = sorted_vals[n // 4]\n        q3 = sorted_vals[3 * n // 4]\n        iqr = q3 - q1\n        lower = q1 - 1.5 * iqr\n        upper = q3 + 1.5 * iqr\n        outliers = [v for v in vals if v < lower or v >"},{"language":"json","snippet":"{\n  \"rows\": 7,\n  \"columns\": [\"date\", \"revenue\", \"users\", \"conversion\"],\n  \"statistics\": {\n    \"revenue\": {\n      \"mean\": 1271.43,\n      \"median\": 1300.0,\n      \"stdev\": 239.05,\n      \"min\": 900,\n      \"max\": 1600,\n      \"trend\": \"stable\"\n    }\n  },\n  \"correlations\": {\n    \"revenue_vs_users\": 0.985,\n    \"revenue_vs_conversion\": 0.672\n  }\n}"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nbadge: premium\nname: data-analyzer\nversion: 2.0.0\ndescription: 数据分析 - 加载CSV/JSON自动计算统计描述(均�?中位�?标准�?极�?，异常检测，趋势分析，结果本地持久化\ntags: [data, analysis, statistics, visualization, productivity]\nauthor: laosi\nsource: original\n---\n\n# Data Analyzer - 数据分析引擎\n\n> 激活词: 分析数据 / data analyze / 统计\n\n## 功能\n\n- CSV/JSON 数据加载解析\n- 自动统计描述：均值、中位数、标准差、极�?- 异常值检测（IQR/z-score�?- 趋势判断（上�?下降/波动�?- 结果保存到本�?JSON\n\n## Python 实现\n\n```python\nimport csv, json, statistics, math\nfrom datetime import datetime\nfrom typing import List, Dict, Any\n\nclass DataAnalyzer:\n    def __init__(self):\n        self.data: List[Dict[str, Any]] = []\n        self.numeric_cols: List[str] = []\n    \n    def load_csv(self, path: str, delimiter: str = \",\") -> int:\n        \"\"\"从CSV加载数据\"\"\"\n        with open(path, newline=\"\", encoding=\"utf-8\") as f:\n            reader = csv.DictReader(f, delimiter=delimiter)\n            self.data = list(reader)\n        self._detect_numeric()\n        return len(self.data)\n    \n    def load_json(self, path: str) -> int:\n        \"\"\"从JSON加载数据（支持列表和记录列表�?\"\"\n        with open(path, encoding=\"utf-8\") as f:\n            raw = json.load(f)\n        if isinstance(raw, list):\n            self.data = raw\n        elif isinstance(raw, dict):\n            # 尝试找到第一个列表字�?            for v in raw.values():\n                if isinstance(v, list):\n                    self.data = v\n                    break\n        self._detect_numeric()\n        return len(self.data)\n    \n    def _detect_numeric(self):\n        \"\"\"自动检测数值列\"\"\"\n        if not self.data:\n            return\n        for col in self.data[0]:\n            try:\n                float(self.data[0][col])\n                self.numeric_cols.append(col)\n            except (ValueError, TypeError):\n                pass\n    \n    def describe(self, col: str) -> dict:\n        \"\"\"数值列的统计描�?\"\"\n        if col not in self.numeric_cols:\n            return {\"error\": f\"'{col}' is not numeric\"}\n        vals = [float(r[col]) for r in self.data if r.get(col)]\n        \n        n = len(vals)\n        mean = statistics.mean(vals)\n        median = statistics.median(vals)\n        stdev = statistics.stdev(vals) if n > 1 else 0\n        \n        # 异常检�?(IQR方法)\n        sorted_vals = sorted(vals)\n        q1 = sorted_vals[n // 4]\n        q3 = sorted_vals[3 * n // 4]\n        iqr = q3 - q1\n        lower = q1 - 1.5 * iqr\n        upper = q3 + 1.5 * iqr\n        outliers = [v for v in vals if v < lower or v > upper]\n        \n        # 趋势判断\n        half = n // 2\n        first_half = statistics.mean(vals[:half]) if half > 0 else mean\n        second_half = statistics.mean(vals[half:]) if half > 0 else mean\n        trend = \"up\" if second_half > first_half * 1.05 else \"down\" if second_half < first_half * 0.95 else \"stable\"\n        \n        return {\n            \"column\": col,\n            \"count\": n,\n            \"mean\": round(mean, 2),\n            \"median\": round(median, 2),\n            \"stdev\": round(stdev, 2),\n            \"min\": round(min(vals), 2),\n            \"max\": round(max(vals), 2),\n  "},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn71pk44ca87scz3pstt90r66n80xhaa\",\n  \"slug\": \"laosi-data-analyzer\",\n  \"version\": \"2.0.0\",\n  \"publishedAt\": 1780097499130\n}"},{"path":"skill-card.md","content":"## Description:\n\nData Analyzer Pro helps an agent load CSV or JSON datasets, compute descriptive statistics, detect outliers, assess trends, calculate correlations, and persist analysis results as JSON.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[534422530](https://clawhub.ai/user/534422530)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers, analysts, and business users can use this skill to analyze structured CSV or JSON data for summaries, outliers, trends, and correlations. It is suitable for operational reports, A/B test review, data-quality checks, and metric monitoring.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Report output paths can overwrite arbitrary writable local files when a filename is supplied.\n\nMitigation: Use only explicit trusted output paths, keep generated reports in a dedicated directory, and confirm before overwriting existing files.\n\nRisk: Broad activation or manifest disclosures may invoke the skill in contexts where local file writes are not expected.\n\nMitigation: Avoid broad auto-invocation and review the intended dataset and output path before use.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/534422530/skills/laosi-data-analyzer)\n\n## Skill Output:\n\n**Output Type(s):** [text, code, JSON, files]\n\n**Output Format:** [Markdown guidance with Python code examples and optional JSON report files]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Reports may be written to a user-supplied local output path.]\n\n## Skill Version(s):\n\n2.0.0 (source: server release, SKILL.md frontmatter, hub.json)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."},{"path":"hub.json","content":"{\r\n    \"description\":  \"Premium version with full implementation, examples, and enterprise support\",\r\n    \"minOpenClawVersion\":  \"1.2.0\",\r\n    \"version\":  \"2.0.0\",\r\n    \"tags\":  [\r\n                 \"data\",\r\n                 \"analysis\",\r\n                 \"statistics\",\r\n                 \"visualization\",\r\n                 \"pro\"\r\n             ],\r\n    \"author\":  \"laosi\",\r\n    \"name\":  \"data-analyzer\",\r\n    \"pricing\":  {\r\n                    \"price\":  3900,\r\n                    \"model\":  \"one-time\"\r\n                },\r\n    \"license\":  \"MIT\",\r\n    \"displayName\":  \"Data Analyzer Pro\"\r\n}"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"数据分析 - 加载CSV/JSON自动计算统计描述(均�?中位�?标准�?极�?，异常检测，趋势分析，结果本地持久化 Skill: Data Analyzer Pro Owner: 534422530 Summary: 数据分析 - 加载CSV/JSON自动计算统计描述(均�?中位�?标准�?极�?，异常检测，趋势分析，结果本地持久化 Tags: analysis:2.0.0, data:2.0.0, latest:2.0.0, pro:2.0.0, productivity:1.0.0, statistics:2.0.0, visualization:2.0.0 Version history: v2.0.0 | 2026-05-29T23:31:39.130Z | auto laosi-data-analyzer 2.0.0 adds premium status and metadata. - Added a \"premium\" badge to indicate enhanced or premium features. - Intro","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1052,"uniquenessScore":50,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-11T13:53:51.814Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-11T13:53:51.814Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-11T16:02:45.506Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}