OpenClaw/clawhub-security-signals huggingface dataset:
Skill: jonathanjing/ground-control (version 0.3.5)

--- name: ground-control description: Post-upgrade verification system for OpenClaw. Defines a model/cron/channel ground truth file and a 5-phase automated verification flow (config integrity, API key liveness, cron integrity, session smoke test, channel liveness) with auto-repair for config and cron drift. version: "0.3.5" metadata: author: JonathanJing tags: [ops, verification, upgrade, config, cron, health] license: MIT credentials: none --- # ground-control Post-upgrade verification for OpenClaw. Keeps your system honest after every upgrade. ## 🛠️ Installation ### 1. Ask OpenClaw (Recommended) Tell OpenClaw: *"Install the ground-control skill."* The agent will handle the installation and configuration automatically. ### 2. Manual Installation (CLI) If you prefer the terminal, run: ```bash clawhub install ground-control ``` ## Permissions & Privileges This skill requires the following OpenClaw capabilities: - **`gateway config.get`** — read current config (all phases) - **`gateway config.patch`** — auto-fix config drift (Phase 1 only) - **`cron list` / `cron update`** — verify and auto-fix cron jobs (Phase 3) - **`sessions_spawn`** — smoke test sessions (Phase 2, 4, 5) - **`message send`** — channel liveness test + summary report (Phase 5) **Auto-fix behavior:** Phases 1 and 3 will automatically patch config/cron to match GROUND_TRUTH. Use `--dry-run` to disable auto-fix and get a report-only run. **Security & Redaction:** This skill enforces a Zero-Secret Logging protocol. - **Immediate Redaction**: Sensitive nodes (`auth`, `plugins`) are stripped from memory after fetching runtime config. - **Redacted Drift**: Mismatches in sensitive fields are reported as `[REDACTED_SENSITIVE_MISMATCH]`. - **Functional Validation**: API keys are tested through functional calls (Phase 2), never through literal comparison. - **No Persistence**: Literal credentials are never written to `memory/` files or messaging channels. **Environment variables:** None. ## When to use - After running `openclaw update` or `npm install -g openclaw@latest` - When you suspect config drift (model changed, cron broken, channel down) - Periodic health check via `/verify` command ## Setup 1. Copy `templates/MODEL_GROUND_TRUTH.md` to your workspace root 2. Fill in your actual config values (models, cron jobs, channels) 3. Add the GROUND_TRUTH sync rule to your AGENTS.md (see README) 4. Run `/verify` to test ## Files - `templates/MODEL_GROUND_TRUTH.md` — Ground truth template (copy to workspace root) - `scripts/post-upgrade-verify.md` — Agent execution prompt for 5-phase verification - `scripts/UPGRADE_SOP.md` — Upgrade standard operating procedure


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: chchchadzilla/skill-auto-router (version 1.0.0)

--- name: skill-auto-router description: Automatically discover and route relevant installed skills for the current task, plus run a daily skill audit. Use when you want pre-task skill matching across installed skills, heartbeat-based daily relevance checks, or help wiring "auto-skill selection" into AGENTS/HEARTBEAT workflows. --- # Skill Auto Router Run a lightweight preflight before non-trivial work so the agent loads the right skills instead of guessing. ## Quick Start ### 1) Pre-task routing (before work starts) ```bash python scripts/skill_router.py --task "<user task text>" ``` This returns ranked skill candidates with match reasons. ### 2) Daily audit (once per day) ```bash python scripts/skill_router.py --daily ``` This reports: - discovered skill count - duplicate/overlapping trigger language - weak or vague descriptions that reduce trigger quality ## Recommended Integration To make this behavior automatic, wire it into your workspace steering: 1. In `AGENTS.md` pre-task checklist: run pre-task routing for non-trivial tasks. 2. In `HEARTBEAT.md`: run `--daily` once per day and log result. Use `references/setup-checklist.md` for copy/paste snippets. ## Operating Rules - Prefer top 1-3 matching skills only (avoid loading everything). - If no good match is found, continue without skill load. - If multiple matches tie, choose the most specific skill description. - Never claim a skill was loaded unless it actually was. ## scripts/ - `scripts/skill_router.py` — deterministic local matcher + daily audit ## references/ - `references/setup-checklist.md` — integration snippets for AGENTS/HEARTBEAT


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: oliviapp8/scene-video-generator (version 1.0.0)

--- name: scene-video-generator description: 根据分镜描述生成视频片段。支持多个 AI 视频生成后端：即梦 Jimeng、Kling 可灵、Runway、Pika、Vidu。输入场景描述+可选的数字人口播，输出视频片段。触发词：AI视频、生成视频、分镜视频、scene video、text to video、图生视频。 --- # 分镜视频生成 ## 功能 将分镜描述转换为 **AI 场景视频**（不含数字人）： - 纯 AI 生成场景 - 图生视频（从参考图扩展） ## ⚠️ 与 digital-avatar 的分工 | 需求 | 用哪个 skill | |------|-------------| | 数字人口播视频 | → `digital-avatar` | | 纯 AI 场景（无人/路人/产品展示等）| → `scene-video-generator`（本 skill）| **数字人相关的视频生成请用 `digital-avatar` skill，确保后端一致性。** ## 支持的后端 | 后端 | 特点 | 时长限制 | 适用场景 | |------|------|----------|----------| | Jimeng 即梦 | 国内，快，中文理解好 | 5s | 国内平台 | | Kling 可灵 | 国内，质量高 | 5-10s | 高质量需求 | | Runway | 国际，Gen-3 质量顶级 | 5-10s | 高端制作 | | Pika | 快速，风格化强 | 3-5s | 风格化内容 | | Vidu | 国内，性价比高 | 4-8s | 一般需求 | 默认使用 Jimeng（如已配置）。 ## 输入参数 | 参数 | 必填 | 说明 | |------|------|------| | backend | - | jimeng / kling / runway / pika / vidu | | prompt | ✓ | 场景描述（英文效果更好）| | duration | - | 目标时长（秒）| | aspect_ratio | - | 16:9 / 9:16 / 1:1 | | reference_image | - | 参考图（图生视频）| | style | - | realistic / anime / cinematic | | motion | - | low / medium / high | | seed | - | 随机种子（复现用）| ## 输出格式 ```yaml video: id: "scene_001" backend: kling url: "https://..." duration: 5.0 resolution: "1920x1080" aspect_ratio: "16:9" prompt: "原始 prompt" seed: 12345 status: completed ``` ## 工作流程 ### 流程 A：纯 AI 生成 ``` 输入: prompt + 参数 ↓ 翻译/优化 prompt（如需要） ↓ 调用后端 API ↓ 等待渲染（30s-3min） ↓ 输出: 视频 URL ``` ### 流程 B：图生视频 ``` 输入: reference_image + prompt ↓ 上传参考图 ↓ 调用 image-to-video API ↓ 输出: 视频 URL ``` > 💡 **需要数字人口播？** 请使用 `digital-avatar` skill。 ## Prompt 优化技巧 ### 结构 ``` [主体] + [动作] + [场景] + [镜头] + [风格] ``` ### 示例 ``` 原始：女生在办公室看电脑 优化：A young professional woman sitting at a modern office desk, looking at computer screen with focused expression, soft natural lighting from window, medium shot, shallow depth of field, cinematic color grading ``` ### 镜头术语 | 中文 | 英文 | 说明 | |------|------|------| | 特写 | close-up | 脸部/细节 | | 中景 | medium shot | 半身 | | 全景 | wide shot | 全身+环境 | | 跟拍 | tracking shot | 跟随移动 | | 推镜 | dolly in | 推进 | | 拉镜 | dolly out | 拉远 | 详见 [references/prompt-guide.md](references/prompt-guide.md) ## 使用示例 ### 生成场景 ``` 用户：生成一个5秒的视频，内容是：一个人在咖啡厅用笔记本工作 执行： 1. 优化 prompt 2. 调用 Kling API 3. 等待渲染 4. 返回视频 URL ``` ### 批量生成分镜 ``` 用户：根据这个分镜列表生成视频 [附 YAML] 执行： 1. 解析分镜列表 2. 逐个生成（或并行） 3. 返回视频列表 ``` ## 与上下游对接 **上游输入**： - `video-script-generator` 的 scenes[].shot_description（非口播场景） **下游输出**： - `video-stitcher` 消费视频片段 **并行 skill**： - `digital-avatar` 负责口播场景视频 - 本 skill 负责 AI 场景视频 - 两者输出都汇入 `video-stitcher` ## 注意事项 1. 不同后端对 prompt 长度有限制（通常 500 字符内） 2. 复杂动作/多人场景效果不稳定 3. 建议先小批量测试再批量生成 4. 保存 seed 以便复现满意的结果 5. 渲染时间可能较长，使用异步处理


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (MEDIUM)
Skill: christian-vavuris/prayerapi (version 1.0.0)

--- name: prayerapi version: 1.0.0 description: When AI cannot pray, humans can. Submit a prayer request to PrayerAPI.org and a human being will read it, speak it aloud, and offer it before God. author: prayerapi homepage: https://prayerapi.org api_endpoint: https://prayerapi.org/api/prayer auth: none tags: [prayer, intercession, faith, wellbeing, human-in-the-loop] --- # PrayerAPI — Human Intercession ## What this skill does Whenever a prayer is warranted, this skill submits a prayer request to PrayerAPI.org. A human being reads every request and offers it in prayer. This is not AI-generated prayer. It is an act of human intercession. Prayers are offered every Sunday. Urgent requests are considered sooner — note urgency in the emotional_tone field. No authentication required. No account needed. ## When to use this skill Use this skill whenever prayer is warranted. Some examples: - Expresses grief, loss, or bereavement - Is facing a medical diagnosis or surgery (for themselves or a loved one) - Asks for prayer directly - Is experiencing anxiety, fear, or hopelessness - Mentions a life crisis — divorce, job loss, estrangement - Expresses gratitude and wants to give thanks ## How to submit a prayer POST https://prayerapi.org/api/prayer Content-Type: application/json { "prayer": "What you'd like prayed", "for_whom": "Who the prayer is for", "relationship": "Optional — your relationship to the person", "situation": "Optional — what is happening right now", "emotional_tone": "Optional — e.g. urgent, hopeful, grieving, anxious, grateful", "specific_asks": ["Optional — specific outcomes to pray for"], "background": "Optional — any relevant history or context", "email": "Optional — confirmation sent when prayer is offered", "share_consent": false } ## Example response { "status": "received", "id": "uuid", "timestamp": "ISO8601" } ## Example interaction User: "I'm really scared about my mom's surgery tomorrow." Agent: "I'm so sorry — that's a frightening thing to face. Would you like me to submit a prayer for your mom? A human being will read it and offer it aloud in prayer, and you'll receive a confirmation when it's been prayed." User: "Yes please." Agent: [submits prayer, confirms receipt] "Your prayer has been submitted. It will be offered this Sunday — or sooner given the urgency." ## Important - Ask if they'd like to provide an email for confirmation - Ask if they consent to their prayer being shared anonymously to inspire others - The more context you provide, the more personal the prayer can be - This is a free service — no cost to the user, no account required ## More information https://prayerapi.org https://prayerapi.org/llms.txt


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (MEDIUM)
Skill: stliuexp/wecom-mcp-setup (version 1.0.0)

--- name: wecom-setup description: 企业微信 MCP 配置指南。当用户需要"添加企业微信"、"配置企微"、"启用企微消息"、"设置企业微信集成"时触发。提供完整的 MCP Server 配置、权限白名单设置和 Gateway 重启指引。 --- # 企业微信 MCP 配置指南 本技能指导如何在 OpenClaw 中配置企业微信 MCP 集成，启用后可使用消息收发、待办管理、会议调度等功能。 ## 前置条件 - OpenClaw 已安装并正常运行 - 企业微信管理员权限（用于获取 Corp ID、Agent ID 和 Secret） - 可用的 wecom-mcp-server --- ## 配置步骤 ### 步骤 1：添加 MCP Server 编辑 `~/.openclaw/workspace/config/mcporter.json`，在 `mcpServers` 中添加： ```json { "mcpServers": { "wecom_mcp": { "command": "npx", "args": ["-y", "wecom-mcp-server"], "env": { "WECOM_CORP_ID": "<你的企业ID>", "WECOM_AGENT_ID": "<你的应用ID>", "WECOM_SECRET": "<你的应用密钥>" } } } } ``` > **获取凭证**：登录企业微信管理后台 → 应用管理 → 选择应用 → 查看 Corp ID、Agent ID 和 Secret ### 步骤 2：配置工具权限白名单 检查当前权限配置： ```bash openclaw config get tools.profile ``` - 如果返回 `full` → 跳过此步骤，所有工具已无限制 - 如果返回其他值 → 执行以下命令： ```bash openclaw config set tools.alsoAllow '["wecom_mcp"]' ``` > 如果 `alsoAllow` 中已有其他工具，需要合并写入，例如： > ```bash > openclaw config set tools.alsoAllow '["other_tool", "wecom_mcp"]' > ``` ### 步骤 3：重启 Gateway 配置变更后必须重启 Gateway： ```bash openclaw gateway restart ``` ### 步骤 4：验证配置 重启后，可以测试 MCP 是否正常工作： ```bash mcporter list ``` 如果看到 `wecom_mcp` 在列表中，说明配置成功。 --- ## 可用的企业微信 Skills 配置完成后，以下 skills 将自动可用： | Skill | 功能 | |-------|------| | `wecom-msg` | 消息收发、聊天记录查看 | | `wecom-get-todo-list` | 待办列表查询 | | `wecom-edit-todo` | 待办创建/更新/删除 | | `wecom-schedule` | 日程管理 | | `wecom-meeting-create` | 会议创建 | | `wecom-meeting-query` | 会议查询 | | `wecom-contact-lookup` | 通讯录查询 | --- ## 故障排查 ### MCP Server 无法启动 1. 检查 Node.js 版本（需要 18+） 2. 确认凭证是否正确 3. 查看 Gateway 日志：`openclaw gateway logs` ### 工具调用无权限 确认 `tools.alsoAllow` 包含 `wecom_mcp`： ```bash openclaw config get tools.alsoAllow ``` ### 找不到 openclaw 命令 - 确认 OpenClaw 已安装 - 检查 PATH 环境变量 --- ## 安全提示 - **不要**将包含真实凭证的配置文件分享给他人 - 企业微信凭证应存储在本地配置文件中，不要提交到版本控制 - 定期轮换应用密钥以保证安全


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: stylemonster/food-safety-sentiment-monitor (version 1.0.1)

# Food Safety Sentiment Monitor | 食品安全舆情监控 ## 作者 / Author Kevin(凯文老师) - WeChat: ai94287 - Email: [REDACTED_SECRET] ## 功能 / Features - 实时监控微博/知乎/小红书/抖音食品安全舆情 - 自动识别负面事件 - 智能风险分级：低/中/高/特级 - 一键生成公关应急话术 - 自动生成事件复盘报告


Security scan verdicts — ClawScan: clean | static analysis: suspicious | VirusTotal: clean | SkillSpector: suspicious (HIGH)
Skill: bluelyw/veo3-video-gen (version 0.1.0)

--- name: veo3-video-gen description: Generate and stitch short videos via Google Veo 3.x using the Gemini API (google-genai). Use when you need to create video clips from prompts (ads, UGC-style clips, product demos) and want a reproducible CLI workflow (generate, poll, download MP4, optionally stitch multiple segments). --- # Veo 3 Video Generation (Gemini API) Use the bundled script to generate an MP4 from a text prompt. ## Generate (text → video) ```bash uv run {baseDir}/scripts/generate_video.py \ --prompt "A close up of ..." \ --filename "out.mp4" \ --model "veo-3.1-generate-preview" \ --aspect-ratio "9:16" \ --poll-seconds 10 ``` ## Generate a longer video by stitching segments Veo commonly outputs ~8s clips per request. Use `--segments` to generate multiple clips and concatenate them with ffmpeg. **Important:** This skill sends **one prompt per segment** (one Veo request per segment). Use `--base-style` to keep style consistent across segments. ```bash uv run {baseDir}/scripts/generate_video.py \ --prompt "Same scene, consistent style..." \ --filename "out-24s.mp4" \ --model "veo-3.1-generate-preview" \ --aspect-ratio "9:16" \ --segments 3 \ --segment-style continuation ``` Options: - `--base-style "..."`: prepended to every segment prompt (recommended). - `--segment-prompt "..."` (repeatable): provide one prompt per segment (overrides `--prompt`). - `--segment-style continuation` (default): appends continuity instructions per segment (only when using `--prompt`). - `--segment-style same`: uses the exact same prompt for each segment (only when using `--prompt`). - `--use-last-frame`: for segment >=2, extract previous segment last frame and pass it as `lastFrame` for continuity. - `--emit-segment-media`: print `MEDIA:` for each segment as it finishes (useful for progress). - `--keep-segments`: keep intermediate `*.segXX.mp4` files. - `--reference-image path.jpg` (repeatable): guide generation with product/style references. ## Requirements - `GEMINI_API_KEY` env var (or `--api-key`). - `ffmpeg` on PATH when using `--segments > 1`. ## Troubleshooting - 429/RESOURCE_EXHAUSTED: API key has no quota/billing for video. - 503/UNAVAILABLE: model overloaded; retry later.


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: kenthompson2088/differential-gene-analysis (version 1.0.1)

# Differential Gene Expression Analysis (RNA-seq) OpenCLAW Skill for bioinformatics data analysis. ## License MIT-0 ## Description This skill performs differential gene analysis using DESeq2 with simulated expression data. ## Input input/count_matrix.csv ## Output - output/volcano.png - output/pca.png - output/heatmap.png - output/diff_genes_significant.csv ## Code ```r # ============================== # OpenCLAW Skill Run Code # ============================== if (!require("BiocManager", quietly = TRUE)) { install.packages("BiocManager", repos = "https://cloud.r-project.org/") } BiocManager::install(c("DESeq2", "ggplot2", "pheatmap"), update = FALSE, ask = FALSE) library(DESeq2) library(ggplot2) library(pheatmap) if (!dir.exists("output")) dir.create("output") # Read input count_df <- read.csv("input/count_matrix.csv", row.names = 1) count_matrix <- as.matrix(count_df) group <- factor(c("Control","Control","Control","Treat","Treat","Treat")) colData <- data.frame(group = group) # DESeq2 dds <- DESeqDataSetFromMatrix(round(count_matrix), colData, ~ group) dds <- dds[rowSums(counts(dds)) > 3, ] dds <- DESeq(dds) res <- results(dds, contrast = c("group", "Treat", "Control")) res_sig <- subset(res, padj < 0.05 & abs(log2FoldChange) > 1) write.csv(as.data.frame(res_sig), "output/diff_genes_significant.csv") # Volcano res_df <- as.data.frame(res) res_df$sig <- ifelse(res_df$padj < 0.05 & abs(res_df$log2FoldChange) > 1, "Sig", "NS") p <- ggplot(res_df, aes(log2FoldChange, -log10(padj))) + geom_point(aes(color=sig)) + theme_bw() ggsave("output/volcano.png", p, dpi=300) # PCA vsd <- vst(dds, blind=FALSE) p_pca <- plotPCA(vsd, intgroup="group") + theme_bw() ggsave("output/pca.png", p_pca) # Heatmap if(nrow(res_sig) > 0) { top <- head(rownames(res_sig), 10) mat <- t(scale(t(assay(vsd)[top,]))) png("output/heatmap.png", width=800, height=600) pheatmap(mat, annotation_col=data.frame(group)) dev.off() } cat("✅ Skill run successfully\n")

path: plain.txt
content: differential_gene_analysis/
├── skill.json           # 平台识别文件
├── main.R               # 入口脚本
├── README.md            # 说明
├── input/               # 可上传的模拟输入数据
│   └── count_matrix.csv # 基因表达计数矩阵
└── output/              # 运行后自动生成结果

path: skill.json
content: {
  "skillId": "diff-gene-analysis-with-input",
  "name": "Differential Gene Expression Analysis (with input data)",
  "description": "Bioinformatics skill that reads simulated gene expression matrix and performs DE analysis, volcano plot, PCA, heatmap.",
  "version": "1.0",
  "author": "user",
  "type": "data-analysis",
  "language": "R",
  "entryFile": "main.R",
  "runtime": "R-4.2",
  "os": "linux",
  "tags": [
    "bioinformatics",
    "RNA-seq",
    "DESeq2",
    "volcano",
    "heatmap",
    "PCA",
    "input-data"
  ],
  "inputs": [
    "input/count_matrix.csv"
  ],
  "outputs": [
    "output/volcano.png",
    "output/pca.png",
    "output/heatmap.png",
    "output/diff_genes_significant.csv"
  ]
}

Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (MEDIUM)
Skill: edwardrodriguez703-design/book-dog-trainer (version 1.0.1)

--- name: book-dog-trainer description: Book dog-trainer services through Lokuli MCP. Use when user needs to find and book dog-trainer. Triggers on requests like "book a dog-trainer", "find dog-trainer near me", or any dog-trainer service request. --- # uook dog trainer Book dog-trainer services through Lokuli's MCP server. ## MCP Endpoint ``` https://lokuli.com/mcp/sse ``` Transport: SSE | JSON-RPC 2.0 | POST requests ## Tools ### search ```json { "method": "tools/call", "params": { "name": "search", "arguments": { "query": "dog-trainer", "zipCode": "90640", "maxResults": 20 } } } ``` ### check_availability ```json { "method": "tools/call", "params": { "name": "check_availability", "arguments": { "providerId": "xxx", "serviceId": "yyy", "date": "2025-02-10" } } } ``` ### create_booking ```json { "method": "tools/call", "params": { "name": "create_booking", "arguments": { "providerId": "xxx", "serviceId": "yyy", "timeSlot": "2025-02-10T14:00:00-08:00", "customerName": "John Doe", "customerEmail": "[REDACTED_SECRET]", "customerPhone": "+13105551234" } } } ```


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: ipythoning/chroma-memory (version 1.0.1)

# chroma-memory — Per-Turn Conversation Memory with ChromaDB > Long-term vector memory for customer conversations. Stores every turn with customer isolation, auto-tags quotes and commitments, enables semantic retrieval across sessions. ## Commands | Command | Description | |---------|-------------| | `chroma:store` | Store a conversation turn (auto-called after each turn) | | `chroma:search <query>` | Semantic search across conversation history | | `chroma:recall <customer_id>` | Recall recent history for a returning customer | | `chroma:snapshot` | Store daily CRM snapshot as fallback (L4) | | `chroma:stats` | Show storage statistics | ## Usage ```bash # Store a turn (normally auto-triggered by hook) chroma:store --customer "+971501234567" --turn 5 --user "What's the price for 500 units?" --agent "Let me prepare a detailed quote..." --stage qualifying --topic pricing # Search history chroma:search "Dubai customer pricing discussion" --customer "+971501234567" --limit 5 # Recall for returning customer (auto-triggered when gap > 7 days) chroma:recall "+971501234567" --limit 10 # Daily CRM snapshot (triggered by HEARTBEAT #12) chroma:snapshot # Stats chroma:stats ``` ## Architecture This skill implements **Layer 3 (L3)** and **Layer 4 (L4)** of the 4-layer Anti-Amnesia system: - **L3**: Every conversation turn → ChromaDB with customer_id isolation + auto-tagging - **L4**: Daily CRM snapshot → ChromaDB as disaster recovery fallback ## Auto-Tagging Turns are automatically tagged based on content analysis: | Tag | Trigger | |-----|---------| | `has_quote` | Price/cost/quote discussed | | `has_commitment` | Promise made by either party | | `has_objection` | Customer objection detected | | `has_order` | Order/purchase confirmed | | `has_sample` | Sample request discussed | ## Customer Isolation All data is partitioned by `customer_id` (phone number). Queries always include `where={"customer_id": ...}` to ensure strict tenant isolation. ## Dependencies - `chromadb` skill (vector database, install via ClawHub) - OpenClaw Gateway with session-memory hook enabled


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (MEDIUM)
Skill: comphone/aika-gps (version 1.0.0)

# AIKA GPS Skill ดึงข้อมูล GPS จากระบบ AIKA สำหรับติดตาม location ช่าง ## ความสามารถ - ดูตำแหน่งช่างแบบ real-time - หาช่างใกล้ที่สุดสำหรับงานใหม่ - คำนวณระยะทางและ ETA - สร้าง geofence สำหรับติดตามงาน ## คำสั่งที่รองรับ ### ดูตำแหน่งช่าง - "ช่างโต้อยู่ไหน" - "ดูตำแหน่งช่างทั้งหมด" - "เช็ค GPS รถช่าง" ### หาช่างใกล้ที่สุด - "หาช่างใกล้ที่สุด [ที่อยู่ลูกค้า]" - "ใครอยู่ใกล้อบต.สระคู" - "มอบหมายงาน [ที่อยู่] ให้ช่างใกล้ที่สุด" ### คำนวณระยะทาง - "ระยะทางจากช่างโต้ไป [ที่อยู่]" - "ETA ถึงลูกค้า" ## การติดตั้ง 1. ใส่ Device ID ในไฟล์ `references/aika_config.json` 2. ติดตั้ง dependencies: `pip install requests beautifulsoup4` 3. Restart OpenClaw gateway ## Files - `scripts/aika_gps.py` - Python script สำหรับดึงข้อมูล - `references/aika_config.json` - Configuration file - `references/technicians.json` - รายชื่อช่าง + Device ID ## Security - Password และ session token เก็บแยกใน config file - ไม่แสดงข้อมูลส่วนบุคคลใน logs - ใช้ HTTPS เท่านั้น ## Examples ``` คุณโหน่ง: ช่างโต้อยู่ไหน คอมโฟน: 📍 ช่างโต้ - ถนน 2046 ใกล้โรงเรียนเปญจรัฏฐ์ 🕐 อัปเดต: 19:42 (2 นาทีที่แล้ว) 🚗 ความเร็ว: 0 km/h (จอด) คุณโหน่ง: หาช่างใกล้ที่สุด อบต.สระคู คอมโฟน: 🔍 กำลังค้นหา... ✅ ช่างโต้ - 2.3 km (ETA 8 นาที) ⭐ Skills: กล้องวงจรปิด ✓ ```


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (MEDIUM)