Compare commits
2 Commits
v185-phase
...
v186-phase
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9b77ddaf15 | ||
|
|
40adb9dc90 |
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"agent": "V45_Leads_Sync",
|
||||
"ts": "2026-04-23T01:00:03+02:00",
|
||||
"ts": "2026-04-23T01:10:02+02:00",
|
||||
"paperclip_total": 48,
|
||||
"active_customer": 4,
|
||||
"warm_prospect": 5,
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
{
|
||||
"created_at": "2026-04-17T14:47:24+00:00",
|
||||
"status": "drafts_generated",
|
||||
"to": "kaouther.najar@ethica.ma",
|
||||
"drafts_count": 3,
|
||||
"drafts": [
|
||||
{
|
||||
"tier": 1,
|
||||
"subject": "Contre-proposition pharma DH \u2014 Palier Premium (1,5 DH)",
|
||||
"gmail_url": "https:\/\/mail.google.com\/mail\/u\/0\/?view=cm&fs=1&tf=cm&to=kaouther.najar%40ethica.ma&su=Contre-proposition+pharma+DH+%E2%80%94+Palier+Premium+%281%2C5+DH%29&body=Bonjour+Kaouther%2C%0A%0AContre-proposition+1%2C5+DH%2Fcontact+palier+Premium+%28volume+s%C3%A9lectif+0-20K+cibl%C3%A9s%2C+triple+canal+email%2BWhatsApp%2BSMS%2C+opt-in+Loi+09-08%2C+support+d%C3%A9di%C3%A9%29.%0A%0ABase%3A+146%2C668+HCPs+valid%C3%A9s+%2B20K+en+7+jours.+Stack+souverain+Maroc.%0A%0AVoir+d%C3%A9tails+complets+sur+https%3A%2F%2Fweval-consulting.com%2Fkaouther-compose.html%0A%0ABien+cordialement%2C%0AYacine"
|
||||
},
|
||||
{
|
||||
"tier": 2,
|
||||
"subject": "Contre-proposition pharma DH \u2014 Palier Standard (1,2 DH)",
|
||||
"gmail_url": "https:\/\/mail.google.com\/mail\/u\/0\/?view=cm&fs=1&tf=cm&to=kaouther.najar%40ethica.ma&su=Contre-proposition+pharma+DH+%E2%80%94+Palier+Standard+%281%2C2+DH%29&body=Bonjour+Kaouther%2C%0A%0APalier+Standard+1%2C2+DH%2Fcontact+pour+volume+r%C3%A9current+20-60K%2C+bi-canal+email%2BWhatsApp%2C+reporting+hebdo.%0A%0ASweet+spot+campagnes+trimestrielles.+DZ+107K+%2F+MA+20K+%2F+TN+18K+disponibles.%0A%0AD%C3%A9tails%3A+https%3A%2F%2Fweval-consulting.com%2Fkaouther-compose.html%0A%0ACordialement%2C%0AYacine"
|
||||
},
|
||||
{
|
||||
"tier": 3,
|
||||
"subject": "Contre-proposition pharma DH \u2014 Palier Volume (1,0 DH)",
|
||||
"gmail_url": "https:\/\/mail.google.com\/mail\/u\/0\/?view=cm&fs=1&tf=cm&to=kaouther.najar%40ethica.ma&su=Contre-proposition+pharma+DH+%E2%80%94+Palier+Volume+%281%2C0+DH%29&body=Bonjour+Kaouther%2C%0A%0APalier+Volume+1%2C0+DH%2Fcontact+%2860K%2B+contacts%2C+6+mois+min%2C+email+principal+%2B+WhatsApp+%2B0%2C2+DH+option%29.%0A%0ACouvre+co%C3%BBts+infra%2BDB.+En-dessous+perte.%0A%0AD%C3%A9tails%3A+https%3A%2F%2Fweval-consulting.com%2Fkaouther-compose.html%0A%0ACordialement%2C%0AYacine"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1 +1,29 @@
|
||||
error code: 502
|
||||
{
|
||||
"ok": true,
|
||||
"agent": "V42_MQL_Scoring_Agent_REAL",
|
||||
"ts": "2026-04-22T23:10:01+00:00",
|
||||
"status": "DEPLOYED_AUTO",
|
||||
"deployed": true,
|
||||
"algorithm": "weighted_behavioral_signals",
|
||||
"signals_tracked": {
|
||||
"wtp_engagement": 100,
|
||||
"chat_engagement": 0,
|
||||
"roi_tool": 0,
|
||||
"email_opened": 0
|
||||
},
|
||||
"avg_score": 25,
|
||||
"mql_threshold": 50,
|
||||
"sql_threshold": 75,
|
||||
"leads_captured": 48,
|
||||
"mql_auto_scored": 20,
|
||||
"sql_auto_scored": 8,
|
||||
"mql_auto_pct": 41,
|
||||
"improvement_vs_manual": {
|
||||
"before_manual_pct": 33.3,
|
||||
"after_auto_pct": 41,
|
||||
"delta": 7.700000000000003
|
||||
},
|
||||
"paperclip_db_ok": true,
|
||||
"paperclip_tables": 2,
|
||||
"root_cause_resolved": "Lead Qualification goulet 16pct manual resolved via AUTO behavioral scoring"
|
||||
}
|
||||
|
||||
@@ -71,39 +71,38 @@ function handler_baseline() {
|
||||
}
|
||||
|
||||
function handler_kpi_source() {
|
||||
$out = "=== KPI SOURCES (WTP) ===\n";
|
||||
// Réutilise wtp-kpi-global-v2
|
||||
$agg = @json_decode(@file_get_contents("http://127.0.0.1/api/wtp-kpi-global-v2.php"), true);
|
||||
if ($agg && isset($agg['synthesis'])) {
|
||||
$s = $agg['synthesis'];
|
||||
$out .= sprintf("Source unique: /api/wtp-kpi-global-v2.php (cache 30s)\n\n");
|
||||
foreach ($s as $k => $v) {
|
||||
$out .= sprintf(" %-25s: %s\n", $k, $v === null ? 'null' : $v);
|
||||
$out = "=== KPI SOURCES - REFERENTIEL UNIQUE ===
|
||||
";
|
||||
$out .= "Source UNIQUE: /api/source-of-truth.json (rebuild cron 10min - doctrine 136)
|
||||
";
|
||||
$out .= "Full registry: /api/wevia-truth-registry.json (1.78MB detail)
|
||||
";
|
||||
$out .= "Aggregator KPI: /api/wtp-kpi-global-v2.php (cache 30s)
|
||||
|
||||
";
|
||||
|
||||
// Source primary: source-of-truth.json (fresh, rebuilt every 10min)
|
||||
$sot = @json_decode(@file_get_contents("/var/www/html/api/source-of-truth.json"), true);
|
||||
if ($sot) {
|
||||
$age = time() - filemtime("/var/www/html/api/source-of-truth.json");
|
||||
$out .= sprintf("-- source-of-truth.json (age %ds) --
|
||||
", $age);
|
||||
foreach (["agents_count","skills_count","intents_count","brains_count","doctrines_count","dashboards_count","providers_count","ethica_total","docker_running","nonreg_score","autonomy_score","autonomy_level"] as $k) {
|
||||
if (isset($sot[$k])) $out .= sprintf(" %-20s: %s
|
||||
", $k, $sot[$k]);
|
||||
}
|
||||
// Detail sources
|
||||
$out .= "\n-- Sources détaillées --\n";
|
||||
if (isset($agg['sources']['nonreg'])) {
|
||||
$n = $agg['sources']['nonreg'];
|
||||
$out .= sprintf("NonReg: %d/%d (ts %s, %d categories)\n", $n['pass'], $n['total'], $n['ts'] ?? '?', $n['categories'] ?? 0);
|
||||
}
|
||||
if (isset($agg['sources']['dock_coverage'])) {
|
||||
$d = $agg['sources']['dock_coverage'];
|
||||
$out .= sprintf("Dock coverage: %d/%d (%d uncovered)\n", $d['covered'], $d['total'], $d['uncovered']);
|
||||
}
|
||||
if (isset($agg['sources']['token_health'])) {
|
||||
$t = $agg['sources']['token_health'];
|
||||
$out .= sprintf("Tokens: %d total, %d expired (%d%% health)\n", $t['total'], $t['expired'], $t['health_pct']);
|
||||
}
|
||||
} else {
|
||||
$out .= "ERROR: wtp-kpi-global-v2 unreachable\n";
|
||||
}
|
||||
// Truth registry (agents 906, skills 15509, doctrines 124)
|
||||
$truth = @json_decode(@file_get_contents("/var/www/html/api/wevia-truth-registry.json"), true);
|
||||
if ($truth) {
|
||||
$out .= "\n-- /api/wevia-truth-registry.json --\n";
|
||||
if (isset($truth['agents']['count_unique'])) $out .= "Agents unique: " . $truth['agents']['count_unique'] . "\n";
|
||||
if (isset($truth['skills']['TOTAL'])) $out .= "Skills total: " . $truth['skills']['TOTAL'] . "\n";
|
||||
if (isset($truth['doctrines']['count'])) $out .= "Doctrines: " . $truth['doctrines']['count'] . "\n";
|
||||
|
||||
// Complement: wtp-kpi-global-v2
|
||||
$agg = @json_decode(@file_get_contents("http://127.0.0.1/api/wtp-kpi-global-v2.php"), true);
|
||||
if ($agg && isset($agg["synthesis"])) {
|
||||
$out .= "
|
||||
-- wtp-kpi-global-v2.php synthesis --
|
||||
";
|
||||
foreach ($agg["synthesis"] as $k => $v) {
|
||||
$out .= sprintf(" %-25s: %s
|
||||
", $k, $v === null ? "null" : $v);
|
||||
}
|
||||
}
|
||||
return $out;
|
||||
}
|
||||
|
||||
@@ -1,963 +0,0 @@
|
||||
{
|
||||
"report": {
|
||||
"total": 70,
|
||||
"wired": 70,
|
||||
"not_wired": 0,
|
||||
"with_readme": 34,
|
||||
"with_docker": 14,
|
||||
"scan_time": "2026-04-17T23:00:02.066687",
|
||||
"by_status": {
|
||||
"integrated": 70,
|
||||
"discovered": 0,
|
||||
"evaluated": 0
|
||||
}
|
||||
},
|
||||
"tools": {
|
||||
"weval-l99": {
|
||||
"name": "weval-l99",
|
||||
"path": "/opt/weval-l99",
|
||||
"files": 251,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": true,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-17T23:00:02.043253"
|
||||
},
|
||||
"wevia-brain": {
|
||||
"name": "wevia-brain",
|
||||
"path": "/opt/wevia-brain",
|
||||
"files": 156,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": true,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-17T23:00:02.061095"
|
||||
},
|
||||
"skills": {
|
||||
"name": "skills",
|
||||
"path": "/opt/skills",
|
||||
"files": 110,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-17T23:00:02.019720"
|
||||
},
|
||||
"everything-claude-code": {
|
||||
"name": "everything-claude-code",
|
||||
"path": "/opt/everything-claude-code",
|
||||
"files": 68,
|
||||
"has_readme": true,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": true,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "**Language:** English | [Portugu\u00eas (Brasil)](docs/pt-BR/README.md) | [\u7b80\u4f53\u4e2d\u6587](README.zh-CN.md) | [\u7e41\u9ad4\u4e2d\u6587](docs/zh-TW/README.md) | [\u65e5\u672c\u8a9e](docs/ja-JP/README.",
|
||||
"discovered": "2026-04-17T23:00:01.929193"
|
||||
},
|
||||
"open-webui-fresh": {
|
||||
"name": "open-webui-fresh",
|
||||
"path": "/opt/open-webui-fresh",
|
||||
"files": 57,
|
||||
"has_readme": true,
|
||||
"has_skill": false,
|
||||
"has_python": true,
|
||||
"has_node": true,
|
||||
"has_docker": true,
|
||||
"wired": true,
|
||||
"description": "# Open WebUI \ud83d\udc4b   | [\u4e2d\u6587](README.zh.md) | [\u65e5\u672c\u8a9e](README.ja.md) | [Espa\u00f1ol](README.es.md) | [Ti\u1ebfng Vi\u1ec7t](README.vi.md) | [Portugu\u00eas](README.p",
|
||||
"discovered": "2026-04-17T23:00:01.984703"
|
||||
},
|
||||
"mxyhi_ok-skills": {
|
||||
"name": "mxyhi_ok-skills",
|
||||
"path": "/opt/mxyhi_ok-skills",
|
||||
"files": 44,
|
||||
"has_readme": true,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "# OK Skills: AI Coding Agent Skills for Codex, Claude Code, Cursor, OpenClaw, and More English | [\u7b80\u4f53\u4e2d\u6587](README.zh-CN.md) | [\u7e41\u9ad4\u4e2d\u6587](README.zh-TW.md) | ",
|
||||
"discovered": "2026-04-17T23:00:01.976634"
|
||||
},
|
||||
"SuperClaude_Framework": {
|
||||
"name": "SuperClaude_Framework",
|
||||
"path": "/opt/SuperClaude_Framework",
|
||||
"files": 42,
|
||||
"has_readme": true,
|
||||
"has_skill": false,
|
||||
"has_python": true,
|
||||
"has_node": true,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "<div align=\"center\"> # \ud83d\ude80 SuperClaude Framework [](https://smithery.ai/skills?ns=",
|
||||
"discovered": "2026-04-17T23:00:01.871719"
|
||||
},
|
||||
"paperclip-weval": {
|
||||
"name": "paperclip-weval",
|
||||
"path": "/opt/paperclip-weval",
|
||||
"files": 42,
|
||||
"has_readme": true,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": true,
|
||||
"has_docker": true,
|
||||
"wired": true,
|
||||
"description": "<p align=\"center\"> <img src=\"doc/assets/header.png\" alt=\"Paperclip \u2014 runs your business\" width=\"720\" /> </p> <p align=\"center\"> <a href=\"#quickst",
|
||||
"discovered": "2026-04-17T23:00:01.996918"
|
||||
},
|
||||
"vllm": {
|
||||
"name": "vllm",
|
||||
"path": "/opt/vllm",
|
||||
"files": 41,
|
||||
"has_readme": true,
|
||||
"has_skill": false,
|
||||
"has_python": true,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "<!-- markdownlint-disable MD001 MD041 --> <p align=\"center\"> <picture> <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubus",
|
||||
"discovered": "2026-04-17T23:00:02.032814"
|
||||
},
|
||||
"deer-flow": {
|
||||
"name": "deer-flow",
|
||||
"path": "/opt/deer-flow",
|
||||
"files": 38,
|
||||
"has_readme": true,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "# \ud83e\udd8c DeerFlow - 2.0 English | [\u4e2d\u6587](./README_zh.md) | [\u65e5\u672c\u8a9e](./README_ja.md) | [Fran\u00e7ais](./README_fr.md) | [\u0420\u0443\u0441\u0441\u043a\u0438\u0439](./README_ru.md) [ [](https://agent.xfyun.cn) <div align=\"center\"> [ | [Fran\u00e7ais](docs/translations/README.fr.md) | [Italiano](docs/translations/README.it.md) | ",
|
||||
"discovered": "2026-04-17T23:00:01.855982"
|
||||
},
|
||||
"aios": {
|
||||
"name": "aios",
|
||||
"path": "/opt/aios",
|
||||
"files": 19,
|
||||
"has_readme": true,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": true,
|
||||
"wired": true,
|
||||
"description": "# AIOS: AI Agent Operating System <a href='https://arxiv.org/abs/2403.16971'><img src='https://img.shields.io/badge/Paper-PDF-red'></a> <a href='http",
|
||||
"discovered": "2026-04-17T23:00:01.890547"
|
||||
},
|
||||
"weval-ops": {
|
||||
"name": "weval-ops",
|
||||
"path": "/opt/weval-ops",
|
||||
"files": 18,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": true,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-17T23:00:02.048953"
|
||||
},
|
||||
"awesome-claude-code-toolkit": {
|
||||
"name": "awesome-claude-code-toolkit",
|
||||
"path": "/opt/awesome-claude-code-toolkit",
|
||||
"files": 17,
|
||||
"has_readme": true,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "# Claude Code Toolkit **The most comprehensive toolkit for Claude Code -- 135 agents, 35 curated skills (+400,000 via [SkillKit](https://agenstskills",
|
||||
"discovered": "2026-04-17T23:00:01.915360"
|
||||
},
|
||||
"mirofish": {
|
||||
"name": "mirofish",
|
||||
"path": "/opt/mirofish",
|
||||
"files": 17,
|
||||
"has_readme": true,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": true,
|
||||
"has_docker": true,
|
||||
"wired": true,
|
||||
"description": "<div align=\"center\"> <img src=\"./static/image/MiroFish_logo_compressed.jpeg\" alt=\"MiroFish Logo\" width=\"75%\"/> <a href=\"https://trendshift.io/reposi",
|
||||
"discovered": "2026-04-17T23:00:01.970971"
|
||||
},
|
||||
"claude-mem": {
|
||||
"name": "claude-mem",
|
||||
"path": "/opt/claude-mem",
|
||||
"files": 16,
|
||||
"has_readme": true,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "# claude-code-auto-memory **Your CLAUDE.md, always in sync.** Minimal tokens. Zero config. Just works. A Claude Code plugin that watches what Claude",
|
||||
"discovered": "2026-04-17T23:00:01.918218"
|
||||
},
|
||||
"huggingface-skills": {
|
||||
"name": "huggingface-skills",
|
||||
"path": "/opt/huggingface-skills",
|
||||
"files": 15,
|
||||
"has_readme": true,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "# Hugging Face Skills Hugging Face Skills are definitions for AI/ML tasks like dataset creation, model training, and evaluation. They are interoperab",
|
||||
"discovered": "2026-04-17T23:00:01.934346"
|
||||
},
|
||||
"supermemory": {
|
||||
"name": "supermemory",
|
||||
"path": "/opt/supermemory",
|
||||
"files": 14,
|
||||
"has_readme": true,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": true,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "<p align=\"center\"> <picture> <source srcset=\"apps/web/public/logo-fullmark.svg\" media=\"(prefers-color-scheme: dark)\"> <source srcset=\"apps/w",
|
||||
"discovered": "2026-04-17T23:00:02.025127"
|
||||
},
|
||||
"wevads": {
|
||||
"name": "wevads",
|
||||
"path": "/opt/wevads",
|
||||
"files": 14,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-17T23:00:02.037110"
|
||||
},
|
||||
"fmgapp": {
|
||||
"name": "fmgapp",
|
||||
"path": "/opt/fmgapp",
|
||||
"files": 13,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-17T23:00:01.932031"
|
||||
},
|
||||
"rnd-agents": {
|
||||
"name": "rnd-agents",
|
||||
"path": "/opt/rnd-agents",
|
||||
"files": 11,
|
||||
"has_readme": true,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "# Claude Code Plugins: Orchestration and Automation > **\u26a1 Updated for Opus 4.6, Sonnet 4.6 & Haiku 4.5** \u2014 Three-tier model strategy for optimal perf",
|
||||
"discovered": "2026-04-17T23:00:02.008821"
|
||||
},
|
||||
"FrancyJGLisboa_agent-skill-creator": {
|
||||
"name": "FrancyJGLisboa_agent-skill-creator",
|
||||
"path": "/opt/FrancyJGLisboa_agent-skill-creator",
|
||||
"files": 10,
|
||||
"has_readme": true,
|
||||
"has_skill": true,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "# Agent Skill Creator **Turn any workflow into reusable AI agent software that installs on 14+ tools \u2014 no spec writing, no prompt engineering, no cod",
|
||||
"discovered": "2026-04-17T23:00:01.844795"
|
||||
},
|
||||
"obsidian-vault": {
|
||||
"name": "obsidian-vault",
|
||||
"path": "/opt/obsidian-vault",
|
||||
"files": 10,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-17T23:00:01.982468"
|
||||
},
|
||||
"skillsmith": {
|
||||
"name": "skillsmith",
|
||||
"path": "/opt/skillsmith",
|
||||
"files": 10,
|
||||
"has_readme": true,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": true,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "<div align=\"center\"> <img src=\"terminal.svg\" alt=\"Skillsmith terminal\" width=\"740\"/> </div> <div align=\"center\"> # Skillsmith **Build consistent ",
|
||||
"discovered": "2026-04-17T23:00:02.021300"
|
||||
},
|
||||
"awesome-agent-skills": {
|
||||
"name": "awesome-agent-skills",
|
||||
"path": "/opt/awesome-agent-skills",
|
||||
"files": 6,
|
||||
"has_readme": true,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "<a href=\"https://github.com/VoltAgent/voltagent\"> <img width=\"1500\" height=\"801\" alt=\"claude-skills\" src=\"https://github.com/user-attachments/ass",
|
||||
"discovered": "2026-04-17T23:00:01.911694"
|
||||
},
|
||||
"paperclip-skills": {
|
||||
"name": "paperclip-skills",
|
||||
"path": "/opt/paperclip-skills",
|
||||
"files": 6,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-17T23:00:01.992421"
|
||||
},
|
||||
"jzOcb_writing-style-skill": {
|
||||
"name": "jzOcb_writing-style-skill",
|
||||
"path": "/opt/jzOcb_writing-style-skill",
|
||||
"files": 4,
|
||||
"has_readme": true,
|
||||
"has_skill": true,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "# Writing Style Skill \u53ef\u590d\u7528\u7684\u5199\u4f5c\u98ce\u683c Skill \u6a21\u677f\u3002**\u5185\u7f6e\u81ea\u52a8\u5b66\u4e60** \u2014 \u4ece\u4f60\u7684\u4fee\u6539\u4e2d\u81ea\u52a8\u63d0\u53d6\u89c4\u5219\uff0cSKILL.md \u8d8a\u7528\u8d8a\u51c6\u3002 \u517c\u5bb9 **Claude Code** + **OpenClaw (ClawHub)**\u3002 ## \u539f\u7406 ``` AI \u7528 SKILL",
|
||||
"discovered": "2026-04-17T23:00:01.936745"
|
||||
},
|
||||
"qdrant-data": {
|
||||
"name": "qdrant-data",
|
||||
"path": "/opt/qdrant-data",
|
||||
"files": 4,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-17T23:00:02.004828"
|
||||
},
|
||||
"wazuh": {
|
||||
"name": "wazuh",
|
||||
"path": "/opt/wazuh",
|
||||
"files": 4,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": true,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-17T23:00:02.034777"
|
||||
},
|
||||
"plausible": {
|
||||
"name": "plausible",
|
||||
"path": "/opt/plausible",
|
||||
"files": 3,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": true,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-17T23:00:01.998856"
|
||||
},
|
||||
"pmta": {
|
||||
"name": "pmta",
|
||||
"path": "/opt/pmta",
|
||||
"files": 3,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-17T23:00:02.000892"
|
||||
},
|
||||
"render-configs": {
|
||||
"name": "render-configs",
|
||||
"path": "/opt/render-configs",
|
||||
"files": 3,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-17T23:00:02.006774"
|
||||
},
|
||||
"searxng": {
|
||||
"name": "searxng",
|
||||
"path": "/opt/searxng",
|
||||
"files": 3,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-17T23:00:02.017567"
|
||||
},
|
||||
"weval-guardian": {
|
||||
"name": "weval-guardian",
|
||||
"path": "/opt/weval-guardian",
|
||||
"files": 3,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": true,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-17T23:00:02.040900"
|
||||
},
|
||||
"weval-litellm": {
|
||||
"name": "weval-litellm",
|
||||
"path": "/opt/weval-litellm",
|
||||
"files": 3,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": true,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-17T23:00:02.045117"
|
||||
},
|
||||
"weval-security": {
|
||||
"name": "weval-security",
|
||||
"path": "/opt/weval-security",
|
||||
"files": 3,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": true,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-17T23:00:02.056781"
|
||||
},
|
||||
"keyhacks": {
|
||||
"name": "keyhacks",
|
||||
"path": "/opt/keyhacks",
|
||||
"files": 2,
|
||||
"has_readme": true,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "<p align=\"center\"> <img src=\"https://user-images.githubusercontent.com/18099289/56750563-558a9400-6784-11e9-8175-ee2a19ee9d75.png\" width=\"300px\"> </",
|
||||
"discovered": "2026-04-17T23:00:01.942631"
|
||||
},
|
||||
"loki": {
|
||||
"name": "loki",
|
||||
"path": "/opt/loki",
|
||||
"files": 2,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-17T23:00:01.965131"
|
||||
},
|
||||
"ruflo": {
|
||||
"name": "ruflo",
|
||||
"path": "/opt/ruflo",
|
||||
"files": 2,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-17T23:00:02.015452"
|
||||
},
|
||||
"twenty": {
|
||||
"name": "twenty",
|
||||
"path": "/opt/twenty",
|
||||
"files": 2,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-17T23:00:02.028796"
|
||||
},
|
||||
"weval-crewai": {
|
||||
"name": "weval-crewai",
|
||||
"path": "/opt/weval-crewai",
|
||||
"files": 2,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": true,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-17T23:00:02.039016"
|
||||
},
|
||||
"weval-plugins": {
|
||||
"name": "weval-plugins",
|
||||
"path": "/opt/weval-plugins",
|
||||
"files": 2,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-17T23:00:02.050875"
|
||||
},
|
||||
"weval-radar": {
|
||||
"name": "weval-radar",
|
||||
"path": "/opt/weval-radar",
|
||||
"files": 2,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": true,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-17T23:00:02.052813"
|
||||
},
|
||||
"weval-scrapy": {
|
||||
"name": "weval-scrapy",
|
||||
"path": "/opt/weval-scrapy",
|
||||
"files": 2,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-17T23:00:02.054768"
|
||||
},
|
||||
"langfuse": {
|
||||
"name": "langfuse",
|
||||
"path": "/opt/langfuse",
|
||||
"files": 1,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": true,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-17T23:00:01.944789"
|
||||
},
|
||||
"litellm": {
|
||||
"name": "litellm",
|
||||
"path": "/opt/litellm",
|
||||
"files": 1,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-17T23:00:01.961058"
|
||||
},
|
||||
"mattermost-docker": {
|
||||
"name": "mattermost-docker",
|
||||
"path": "/opt/mattermost-docker",
|
||||
"files": 1,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": true,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-17T23:00:01.967076"
|
||||
},
|
||||
"prometheus": {
|
||||
"name": "prometheus",
|
||||
"path": "/opt/prometheus",
|
||||
"files": 1,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-17T23:00:02.002859"
|
||||
},
|
||||
"twenty-compose": {
|
||||
"name": "twenty-compose",
|
||||
"path": "/opt/twenty-compose",
|
||||
"files": 1,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": true,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-17T23:00:02.031019"
|
||||
},
|
||||
"weval-ux": {
|
||||
"name": "weval-ux",
|
||||
"path": "/opt/weval-ux",
|
||||
"files": 1,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": true,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-17T23:00:02.058694"
|
||||
},
|
||||
"DiffusionDB": {
|
||||
"name": "DiffusionDB",
|
||||
"path": "/opt/DiffusionDB",
|
||||
"files": 0,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-17T23:00:01.839504"
|
||||
},
|
||||
"LTX-Video": {
|
||||
"name": "LTX-Video",
|
||||
"path": "/opt/LTX-Video",
|
||||
"files": 0,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-17T23:00:01.867642"
|
||||
},
|
||||
"localai": {
|
||||
"name": "localai",
|
||||
"path": "/opt/localai",
|
||||
"files": 0,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-17T23:00:01.963095"
|
||||
},
|
||||
"wevia-finetune": {
|
||||
"name": "wevia-finetune",
|
||||
"path": "/opt/wevia-finetune",
|
||||
"files": 0,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-17T23:00:02.062978"
|
||||
}
|
||||
},
|
||||
"skills": {
|
||||
"total": 6178,
|
||||
"injected": 694
|
||||
},
|
||||
"trending": [
|
||||
{
|
||||
"name": "weval-l99"
|
||||
},
|
||||
{
|
||||
"name": "wevia-brain"
|
||||
},
|
||||
{
|
||||
"name": "skills"
|
||||
},
|
||||
{
|
||||
"name": "everything-claude-code"
|
||||
},
|
||||
{
|
||||
"name": "open-webui-fresh"
|
||||
},
|
||||
{
|
||||
"name": "activepieces"
|
||||
},
|
||||
{
|
||||
"name": "oh-my-claudecode"
|
||||
},
|
||||
{
|
||||
"name": "mxyhi_ok-skills"
|
||||
},
|
||||
{
|
||||
"name": "SuperClaude_Framework"
|
||||
},
|
||||
{
|
||||
"name": "paperclip-weval"
|
||||
}
|
||||
]
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,976 +0,0 @@
|
||||
{
|
||||
"report": {
|
||||
"total": 71,
|
||||
"wired": 71,
|
||||
"not_wired": 0,
|
||||
"with_readme": 35,
|
||||
"with_docker": 14,
|
||||
"scan_time": "2026-04-18T13:00:02.985638",
|
||||
"by_status": {
|
||||
"integrated": 71,
|
||||
"discovered": 0,
|
||||
"evaluated": 0
|
||||
}
|
||||
},
|
||||
"tools": {
|
||||
"weval-l99": {
|
||||
"name": "weval-l99",
|
||||
"path": "/opt/weval-l99",
|
||||
"files": 256,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": true,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-18T13:00:02.801785"
|
||||
},
|
||||
"wevia-brain": {
|
||||
"name": "wevia-brain",
|
||||
"path": "/opt/wevia-brain",
|
||||
"files": 156,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": true,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-18T13:00:02.944143"
|
||||
},
|
||||
"skills": {
|
||||
"name": "skills",
|
||||
"path": "/opt/skills",
|
||||
"files": 110,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-18T13:00:02.592806"
|
||||
},
|
||||
"everything-claude-code": {
|
||||
"name": "everything-claude-code",
|
||||
"path": "/opt/everything-claude-code",
|
||||
"files": 68,
|
||||
"has_readme": true,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": true,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "**Language:** English | [Portugu\u00eas (Brasil)](docs/pt-BR/README.md) | [\u7b80\u4f53\u4e2d\u6587](README.zh-CN.md) | [\u7e41\u9ad4\u4e2d\u6587](docs/zh-TW/README.md) | [\u65e5\u672c\u8a9e](docs/ja-JP/README.",
|
||||
"discovered": "2026-04-18T13:00:02.346891"
|
||||
},
|
||||
"open-webui-fresh": {
|
||||
"name": "open-webui-fresh",
|
||||
"path": "/opt/open-webui-fresh",
|
||||
"files": 57,
|
||||
"has_readme": true,
|
||||
"has_skill": false,
|
||||
"has_python": true,
|
||||
"has_node": true,
|
||||
"has_docker": true,
|
||||
"wired": true,
|
||||
"description": "# Open WebUI \ud83d\udc4b   | [\u4e2d\u6587](README.zh.md) | [\u65e5\u672c\u8a9e](README.ja.md) | [Espa\u00f1ol](README.es.md) | [Ti\u1ebfng Vi\u1ec7t](README.vi.md) | [Portugu\u00eas](README.p",
|
||||
"discovered": "2026-04-18T13:00:02.425060"
|
||||
},
|
||||
"mxyhi_ok-skills": {
|
||||
"name": "mxyhi_ok-skills",
|
||||
"path": "/opt/mxyhi_ok-skills",
|
||||
"files": 44,
|
||||
"has_readme": true,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "# OK Skills: AI Coding Agent Skills for Codex, Claude Code, Cursor, OpenClaw, and More English | [\u7b80\u4f53\u4e2d\u6587](README.zh-CN.md) | [\u7e41\u9ad4\u4e2d\u6587](README.zh-TW.md) | ",
|
||||
"discovered": "2026-04-18T13:00:02.418951"
|
||||
},
|
||||
"SuperClaude_Framework": {
|
||||
"name": "SuperClaude_Framework",
|
||||
"path": "/opt/SuperClaude_Framework",
|
||||
"files": 42,
|
||||
"has_readme": true,
|
||||
"has_skill": false,
|
||||
"has_python": true,
|
||||
"has_node": true,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "<div align=\"center\"> # \ud83d\ude80 SuperClaude Framework [](https://smithery.ai/skills?ns=",
|
||||
"discovered": "2026-04-18T13:00:02.051158"
|
||||
},
|
||||
"paperclip-weval": {
|
||||
"name": "paperclip-weval",
|
||||
"path": "/opt/paperclip-weval",
|
||||
"files": 42,
|
||||
"has_readme": true,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": true,
|
||||
"has_docker": true,
|
||||
"wired": true,
|
||||
"description": "<p align=\"center\"> <img src=\"doc/assets/header.png\" alt=\"Paperclip \u2014 runs your business\" width=\"720\" /> </p> <p align=\"center\"> <a href=\"#quickst",
|
||||
"discovered": "2026-04-18T13:00:02.432547"
|
||||
},
|
||||
"vllm": {
|
||||
"name": "vllm",
|
||||
"path": "/opt/vllm",
|
||||
"files": 41,
|
||||
"has_readme": true,
|
||||
"has_skill": false,
|
||||
"has_python": true,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "<!-- markdownlint-disable MD001 MD041 --> <p align=\"center\"> <picture> <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubus",
|
||||
"discovered": "2026-04-18T13:00:02.728709"
|
||||
},
|
||||
"deer-flow": {
|
||||
"name": "deer-flow",
|
||||
"path": "/opt/deer-flow",
|
||||
"files": 38,
|
||||
"has_readme": true,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "# \ud83e\udd8c DeerFlow - 2.0 English | [\u4e2d\u6587](./README_zh.md) | [\u65e5\u672c\u8a9e](./README_ja.md) | [Fran\u00e7ais](./README_fr.md) | [\u0420\u0443\u0441\u0441\u043a\u0438\u0439](./README_ru.md) [ [](https://agent.xfyun.cn) <div align=\"center\"> [ | [Fran\u00e7ais](docs/translations/README.fr.md) | [Italiano](docs/translations/README.it.md) | ",
|
||||
"discovered": "2026-04-18T13:00:01.984918"
|
||||
},
|
||||
"aios": {
|
||||
"name": "aios",
|
||||
"path": "/opt/aios",
|
||||
"files": 19,
|
||||
"has_readme": true,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": true,
|
||||
"wired": true,
|
||||
"description": "# AIOS: AI Agent Operating System <a href='https://arxiv.org/abs/2403.16971'><img src='https://img.shields.io/badge/Paper-PDF-red'></a> <a href='http",
|
||||
"discovered": "2026-04-18T13:00:02.135916"
|
||||
},
|
||||
"rnd-agent-framework": {
|
||||
"name": "rnd-agent-framework",
|
||||
"path": "/opt/rnd-agent-framework",
|
||||
"files": 19,
|
||||
"has_readme": true,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": " # Welcome to Microsoft Agent Framework! [\"> <source srcset=\"apps/w",
|
||||
"discovered": "2026-04-18T13:00:02.636408"
|
||||
},
|
||||
"wevads": {
|
||||
"name": "wevads",
|
||||
"path": "/opt/wevads",
|
||||
"files": 14,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-18T13:00:02.760720"
|
||||
},
|
||||
"fmgapp": {
|
||||
"name": "fmgapp",
|
||||
"path": "/opt/fmgapp",
|
||||
"files": 13,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-18T13:00:02.360862"
|
||||
},
|
||||
"obsidian-vault": {
|
||||
"name": "obsidian-vault",
|
||||
"path": "/opt/obsidian-vault",
|
||||
"files": 11,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-18T13:00:02.422707"
|
||||
},
|
||||
"rnd-agents": {
|
||||
"name": "rnd-agents",
|
||||
"path": "/opt/rnd-agents",
|
||||
"files": 11,
|
||||
"has_readme": true,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "# Claude Code Plugins: Orchestration and Automation > **\u26a1 Updated for Opus 4.6, Sonnet 4.6 & Haiku 4.5** \u2014 Three-tier model strategy for optimal perf",
|
||||
"discovered": "2026-04-18T13:00:02.498690"
|
||||
},
|
||||
"FrancyJGLisboa_agent-skill-creator": {
|
||||
"name": "FrancyJGLisboa_agent-skill-creator",
|
||||
"path": "/opt/FrancyJGLisboa_agent-skill-creator",
|
||||
"files": 10,
|
||||
"has_readme": true,
|
||||
"has_skill": true,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "# Agent Skill Creator **Turn any workflow into reusable AI agent software that installs on 14+ tools \u2014 no spec writing, no prompt engineering, no cod",
|
||||
"discovered": "2026-04-18T13:00:01.968741"
|
||||
},
|
||||
"skillsmith": {
|
||||
"name": "skillsmith",
|
||||
"path": "/opt/skillsmith",
|
||||
"files": 10,
|
||||
"has_readme": true,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": true,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "<div align=\"center\"> <img src=\"terminal.svg\" alt=\"Skillsmith terminal\" width=\"740\"/> </div> <div align=\"center\"> # Skillsmith **Build consistent ",
|
||||
"discovered": "2026-04-18T13:00:02.595068"
|
||||
},
|
||||
"awesome-agent-skills": {
|
||||
"name": "awesome-agent-skills",
|
||||
"path": "/opt/awesome-agent-skills",
|
||||
"files": 6,
|
||||
"has_readme": true,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "<a href=\"https://github.com/VoltAgent/voltagent\"> <img width=\"1500\" height=\"801\" alt=\"claude-skills\" src=\"https://github.com/user-attachments/ass",
|
||||
"discovered": "2026-04-18T13:00:02.234908"
|
||||
},
|
||||
"paperclip-skills": {
|
||||
"name": "paperclip-skills",
|
||||
"path": "/opt/paperclip-skills",
|
||||
"files": 6,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-18T13:00:02.430327"
|
||||
},
|
||||
"jzOcb_writing-style-skill": {
|
||||
"name": "jzOcb_writing-style-skill",
|
||||
"path": "/opt/jzOcb_writing-style-skill",
|
||||
"files": 4,
|
||||
"has_readme": true,
|
||||
"has_skill": true,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "# Writing Style Skill \u53ef\u590d\u7528\u7684\u5199\u4f5c\u98ce\u683c Skill \u6a21\u677f\u3002**\u5185\u7f6e\u81ea\u52a8\u5b66\u4e60** \u2014 \u4ece\u4f60\u7684\u4fee\u6539\u4e2d\u81ea\u52a8\u63d0\u53d6\u89c4\u5219\uff0cSKILL.md \u8d8a\u7528\u8d8a\u51c6\u3002 \u517c\u5bb9 **Claude Code** + **OpenClaw (ClawHub)**\u3002 ## \u539f\u7406 ``` AI \u7528 SKILL",
|
||||
"discovered": "2026-04-18T13:00:02.386713"
|
||||
},
|
||||
"qdrant-data": {
|
||||
"name": "qdrant-data",
|
||||
"path": "/opt/qdrant-data",
|
||||
"files": 4,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-18T13:00:02.446274"
|
||||
},
|
||||
"wazuh": {
|
||||
"name": "wazuh",
|
||||
"path": "/opt/wazuh",
|
||||
"files": 4,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": true,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-18T13:00:02.736784"
|
||||
},
|
||||
"plausible": {
|
||||
"name": "plausible",
|
||||
"path": "/opt/plausible",
|
||||
"files": 3,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": true,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-18T13:00:02.434652"
|
||||
},
|
||||
"pmta": {
|
||||
"name": "pmta",
|
||||
"path": "/opt/pmta",
|
||||
"files": 3,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-18T13:00:02.439649"
|
||||
},
|
||||
"render-configs": {
|
||||
"name": "render-configs",
|
||||
"path": "/opt/render-configs",
|
||||
"files": 3,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-18T13:00:02.453871"
|
||||
},
|
||||
"searxng": {
|
||||
"name": "searxng",
|
||||
"path": "/opt/searxng",
|
||||
"files": 3,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-18T13:00:02.582624"
|
||||
},
|
||||
"weval-guardian": {
|
||||
"name": "weval-guardian",
|
||||
"path": "/opt/weval-guardian",
|
||||
"files": 3,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": true,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-18T13:00:02.791675"
|
||||
},
|
||||
"weval-litellm": {
|
||||
"name": "weval-litellm",
|
||||
"path": "/opt/weval-litellm",
|
||||
"files": 3,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": true,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-18T13:00:02.820252"
|
||||
},
|
||||
"weval-security": {
|
||||
"name": "weval-security",
|
||||
"path": "/opt/weval-security",
|
||||
"files": 3,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": true,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-18T13:00:02.921004"
|
||||
},
|
||||
"keyhacks": {
|
||||
"name": "keyhacks",
|
||||
"path": "/opt/keyhacks",
|
||||
"files": 2,
|
||||
"has_readme": true,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "<p align=\"center\"> <img src=\"https://user-images.githubusercontent.com/18099289/56750563-558a9400-6784-11e9-8175-ee2a19ee9d75.png\" width=\"300px\"> </",
|
||||
"discovered": "2026-04-18T13:00:02.389504"
|
||||
},
|
||||
"loki": {
|
||||
"name": "loki",
|
||||
"path": "/opt/loki",
|
||||
"files": 2,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-18T13:00:02.402761"
|
||||
},
|
||||
"ruflo": {
|
||||
"name": "ruflo",
|
||||
"path": "/opt/ruflo",
|
||||
"files": 2,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-18T13:00:02.567373"
|
||||
},
|
||||
"twenty": {
|
||||
"name": "twenty",
|
||||
"path": "/opt/twenty",
|
||||
"files": 2,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-18T13:00:02.681486"
|
||||
},
|
||||
"weval-crewai": {
|
||||
"name": "weval-crewai",
|
||||
"path": "/opt/weval-crewai",
|
||||
"files": 2,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": true,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-18T13:00:02.780470"
|
||||
},
|
||||
"weval-plugins": {
|
||||
"name": "weval-plugins",
|
||||
"path": "/opt/weval-plugins",
|
||||
"files": 2,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-18T13:00:02.855431"
|
||||
},
|
||||
"weval-radar": {
|
||||
"name": "weval-radar",
|
||||
"path": "/opt/weval-radar",
|
||||
"files": 2,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": true,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-18T13:00:02.887524"
|
||||
},
|
||||
"weval-scrapy": {
|
||||
"name": "weval-scrapy",
|
||||
"path": "/opt/weval-scrapy",
|
||||
"files": 2,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-18T13:00:02.898895"
|
||||
},
|
||||
"langfuse": {
|
||||
"name": "langfuse",
|
||||
"path": "/opt/langfuse",
|
||||
"files": 1,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": true,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-18T13:00:02.391474"
|
||||
},
|
||||
"litellm": {
|
||||
"name": "litellm",
|
||||
"path": "/opt/litellm",
|
||||
"files": 1,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-18T13:00:02.398461"
|
||||
},
|
||||
"mattermost-docker": {
|
||||
"name": "mattermost-docker",
|
||||
"path": "/opt/mattermost-docker",
|
||||
"files": 1,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": true,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-18T13:00:02.404877"
|
||||
},
|
||||
"prometheus": {
|
||||
"name": "prometheus",
|
||||
"path": "/opt/prometheus",
|
||||
"files": 1,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-18T13:00:02.442085"
|
||||
},
|
||||
"twenty-compose": {
|
||||
"name": "twenty-compose",
|
||||
"path": "/opt/twenty-compose",
|
||||
"files": 1,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": true,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-18T13:00:02.699280"
|
||||
},
|
||||
"weval-ux": {
|
||||
"name": "weval-ux",
|
||||
"path": "/opt/weval-ux",
|
||||
"files": 1,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": true,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-18T13:00:02.936032"
|
||||
},
|
||||
"DiffusionDB": {
|
||||
"name": "DiffusionDB",
|
||||
"path": "/opt/DiffusionDB",
|
||||
"files": 0,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-18T13:00:01.953062"
|
||||
},
|
||||
"LTX-Video": {
|
||||
"name": "LTX-Video",
|
||||
"path": "/opt/LTX-Video",
|
||||
"files": 0,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-18T13:00:02.012614"
|
||||
},
|
||||
"localai": {
|
||||
"name": "localai",
|
||||
"path": "/opt/localai",
|
||||
"files": 0,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-18T13:00:02.400663"
|
||||
},
|
||||
"wevia-finetune": {
|
||||
"name": "wevia-finetune",
|
||||
"path": "/opt/wevia-finetune",
|
||||
"files": 0,
|
||||
"has_readme": false,
|
||||
"has_skill": false,
|
||||
"has_python": false,
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "",
|
||||
"discovered": "2026-04-18T13:00:02.960591"
|
||||
}
|
||||
},
|
||||
"skills": {
|
||||
"total": 6178,
|
||||
"injected": 694
|
||||
},
|
||||
"trending": [
|
||||
{
|
||||
"name": "weval-l99"
|
||||
},
|
||||
{
|
||||
"name": "wevia-brain"
|
||||
},
|
||||
{
|
||||
"name": "skills"
|
||||
},
|
||||
{
|
||||
"name": "everything-claude-code"
|
||||
},
|
||||
{
|
||||
"name": "open-webui-fresh"
|
||||
},
|
||||
{
|
||||
"name": "activepieces"
|
||||
},
|
||||
{
|
||||
"name": "weval-nonreg"
|
||||
},
|
||||
{
|
||||
"name": "oh-my-claudecode"
|
||||
},
|
||||
{
|
||||
"name": "mxyhi_ok-skills"
|
||||
},
|
||||
{
|
||||
"name": "SuperClaude_Framework"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"ok": true,
|
||||
"version": "V83-business-kpi",
|
||||
"ts": "2026-04-22T23:09:39+00:00",
|
||||
"ts": "2026-04-22T23:14:39+00:00",
|
||||
"summary": {
|
||||
"total_categories": 8,
|
||||
"total_kpis": 64,
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
4
docs/cron-wevia-truth-builder.conf
Normal file
4
docs/cron-wevia-truth-builder.conf
Normal file
@@ -0,0 +1,4 @@
|
||||
# WEVIA TRUTH builder - rebuild every 10 min (doctrine 136 PHASE 2)
|
||||
SHELL=/bin/bash
|
||||
PATH=/usr/bin:/bin
|
||||
*/10 * * * * root /usr/bin/curl -sk -m 20 -o /tmp/truth-build.log https://weval-consulting.com/api/wevia-truth-builder.php 2>&1
|
||||
56
wiki/doctrine-136-referentiel-unique.md
Normal file
56
wiki/doctrine-136-referentiel-unique.md
Normal file
@@ -0,0 +1,56 @@
|
||||
# Doctrine 136 - Referentiel Unique KPI (PHASE 2)
|
||||
**Date:** 2026-04-23
|
||||
**Trigger:** PHASE 2 consolidation - 7 hubs ERP avec fetch eparpilles, doublons KPI, sources multiples divergentes
|
||||
|
||||
## Source UNIQUE officielle
|
||||
**Primary light (1.1 KB, counts only):** /api/source-of-truth.json
|
||||
- Consomme par: dashboards-index.html, wiki.html, nl-audit-handler.php
|
||||
- 13 KPI agreges: agents 1000, skills 20154, intents 2067, brains 25, doctrines 19, dashboards 117, providers 15, ethica 146694, docker 19, nonreg 100, autonomy 99.5 GODMODE
|
||||
|
||||
**Full registry (1.78 MB, detail complet):** /api/wevia-truth-registry.json
|
||||
- Listes completes: agents par source, intents par type, skills detailled, brains, qdrant cols
|
||||
- Consomme par: wevia-master-api.php, wevia-unified-api.php, wevia-unified-hub.html, wevia-autonomy-dashboard.html
|
||||
|
||||
**Aggregator KPI (cache 30s):** /api/wtp-kpi-global-v2.php
|
||||
- 12 KPI synthesis: dock_coverage 96, nonreg 100, arch 100, providers 13, alerts, token_health 82, business 98, agents_active 80, tools_registry 649, commits_24h 460, docker 19, l99 100
|
||||
- Rebuild a chaque hit avec cache 30s
|
||||
|
||||
## Builder officiel
|
||||
- /var/www/html/api/wevia-truth-builder.php (14.9 KB, PHP 8.5)
|
||||
- Dedup 9 sources pour agents
|
||||
- Rebuild /api/source-of-truth.json + /api/wevia-truth-registry.json ensemble
|
||||
- Execution: curl via HTTP/HTTPS
|
||||
|
||||
## Rebuild automatique
|
||||
**Cron /etc/cron.d/wevia-truth-builder:**
|
||||
```
|
||||
*/10 * * * * root /usr/bin/curl -sk -m 20 -o /tmp/truth-build.log https://weval-consulting.com/api/wevia-truth-builder.php
|
||||
```
|
||||
- Persistent (pas via crontab -l mais fichier dedie)
|
||||
- Rebuild toutes les 10 minutes
|
||||
- Log /tmp/truth-build.log
|
||||
|
||||
## Regles de consommation
|
||||
1. Nouveau hub = consomme /api/source-of-truth.json (light) + /api/wtp-kpi-global-v2.php (synth)
|
||||
2. Detail requis = consomme /api/wevia-truth-registry.json
|
||||
3. INTERDICTION de refaire des fetch isoles pour KPI qui existent deja dans source-of-truth
|
||||
4. Si KPI manque = ajouter dans builder, pas dans hub
|
||||
5. Ecrasement interdit = builder est genere automatiquement
|
||||
|
||||
## Hubs existants (5 scannes, todo PHASE 2B refactor progressif)
|
||||
- weval-technology-platform.html: 75 fetch - target refactor pour consommer source-of-truth
|
||||
- all-ia-hub.html: 20 fetch - consomme deja wevia-truth-registry.json partiel
|
||||
- wevia-master.html: 7 fetch - consomme deja source-of-truth.json
|
||||
- wevia-orchestrator.html: 5 fetch - todo
|
||||
- ops-center.html: 15 fetch - todo
|
||||
|
||||
## PHASE 2B future (progressive, zero ecrasement)
|
||||
- Faire consommer source-of-truth.json par WTP (remplace multiples fetch)
|
||||
- Idem pour ops-center et orchestrator
|
||||
- Conserver hubs existants tels quels, juste ajouter fetch wrap
|
||||
|
||||
## Verification PHASE 2
|
||||
- source-of-truth.json REBUILT 2026-04-22 23:16:53
|
||||
- Age apres curl: < 90s (cron 10min)
|
||||
- 13 KPI live, 0 stale
|
||||
- nl_audit.handler_kpi_source consomme source-of-truth en primary + wtp-kpi-global-v2 en complement
|
||||
Reference in New Issue
Block a user