OpenClaw/clawhub-security-signals huggingface dataset:
Skill: ugurozer84/maylo-voice-assistant (version 0.1.0)

--- name: maylo-voice-assistant description: Offline-first voice assistant stack for macOS (Wake word + VAD recording + local Whisper ASR + OpenClaw agent response + offline TTS via macOS say). Use to install, run, and troubleshoot the Maylo voice assistant web UI (cyberpunk dashboard with waveform + push-to-talk over WebSocket) and the always-on wake-word listener (e.g., 'Hey Jarvis') on a Mac mini. --- # Maylo Voice Assistant (macOS) ## What this skill ships - A self-contained app under `assets/app/`: - Wake word listener (openWakeWord) - VAD recording (webrtcvad) - Local ASR (faster-whisper) - Responder bridge via OpenClaw (`openclaw agent --local`) - Offline TTS via `say -v Yelda` - Web UI (HTTPS + WebSocket audio streaming) ## Install / Setup (fresh machine) 1) Copy the app to a working directory (recommended): - `cp -R <skill>/assets/app ~/maylo-voice-assistant` 2) Create venv + install deps: - Run: `scripts/install.sh ~/maylo-voice-assistant` 3) Start the assistant (wake word + responder): - Run: `scripts/run_assistant.sh ~/maylo-voice-assistant` 4) Start the HTTPS web UI for phone mic streaming: - Run: `scripts/run_web_https.sh ~/maylo-voice-assistant --host 0.0.0.0 --port 8443` - On iPhone/Android (same Wi‑Fi): `https://<mac-ip>:8443` - Accept the self-signed certificate warning. ## Normal use - Wake word: say **"Hey Jarvis"** near the Mac mini, then speak your query. - Web UI: hold the mic button to talk; release to send. ## Troubleshooting (fast) - Check logs: - `recordings/assistant.log` - `recordings/responder.log` - `recordings/web.log` - If wake word never triggers, run the minimal tester: - `python jarvis_minimal_test.py` - If the assistant responds to itself (feedback loop): - Set HDMI output back to Mac speakers / use headphones. - Increase `MAYLO_POST_SAY_INHIBIT_SEC`. ## Security / Privacy - Do NOT package or commit: - OAuth client secrets, tokens, refresh tokens - Private certs/keys - This skill ships **no secrets**. Any tokens/keys must be created on the target machine.

path: assets/app/maylo_assistant/__init__.py
content: from .core import MayloAssistant


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (HIGH)
Skill: mysunsi/1lunar (version 1.0.0)

--- name: 1lunar description: "查询中国农历日期。将公历日期转换为农历年、月、日、节气等。使用场景：用户问'今天是农历多少'、'查询2024年春节是哪天'、'2024年中秋节对应的公历日期'等。" --- # 中国农历查询 使用 `chinese-lunar-calendar` npm 包进行公历与农历的相互转换。 ## 安装 首次使用需安装依赖： ```bash cd /tmp && npm install chinese-lunar-calendar ``` ## 查询公历对应的农历 ```bash # 查询公历日期对应的农历 node -e " const { getLunar } = require('/tmp/node_modules/chinese-lunar-calendar/src/lunar_calendar.js'); const result = getLunar(2024, 1, 15); console.log('公历 2024-01-15 => 农历:', result.lunarYear + result.lunarMonth + '月' + result.lunarDate + '日'); console.log('完整信息:', JSON.stringify(result, null, 2)); " ``` **返回字段说明：** - `lunarYear` - 农历年（甲子年格式，如"癸卯年"） - `lunarMonth` - 农历月份 - `lunarDate` - 农历日期 - `isLeap` - 是否闰月 - `zodiac` - 生肖 - `solarTerm` - 节气（如有） - `dateStr` - 简写（如"腊月初五"） ## 常用节日查询 | 农历节日 | 公历参考（2024年） | |---------|-------------------| | 春节 | 2024-02-10 | | 元宵节 | 2024-02-24 | | 清明节 | 2024-04-04 | | 端午节 | 2024-06-10 | | 中秋节 | 2024-09-17 | | 重阳节 | 2024-10-11 | ## 示例对话 **用户**: "今天农历几号？" ```bash # 获取今天日期 node -e " const { getLunar } = require('/tmp/node_modules/chinese-lunar-calendar/src/lunar_calendar.js'); const today = new Date(); const result = getLunar(today.getFullYear(), today.getMonth() + 1, today.getDate()); console.log('今天是农历: ' + result.lunarYear + result.lunarMonth + '月' + result.lunarDate + '日 (' + result.zodiac + '年)'); " ``` **用户**: "2024年春节是哪天？" ```bash # 春节是农历正月初一 # 反查：2024年正月初一对应的公历 # 已知2024年春节是2024-02-10 echo "2024年春节: 2024-02-10 (癸卯年正月初一)" ```


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: amstko/tts (version 1.0.0)

--- name: tts description: Convert text to speech using Hume AI (or OpenAI) API. Use when the user asks for an audio message, a voice reply, or to hear something "of vive voix". --- # Text-to-Speech (TTS) Convert text to speech and generate audio files (MP3). ## Hume AI (Preferred) - **Preferred Voice**: [REDACTED_SECRET] - **Keys**: Stored in environment as `HUME_API_KEY` and `HUME_SECRET_KEY`. ### Usage ```bash HUME_API_KEY="..." HUME_SECRET_KEY="..." node {baseDir}/scripts/generate_hume_speech.js --text "Hello Jonathan" --output "output.mp3" ``` ## OpenAI (Legacy) - **Preferred Voice**: `nova` - **Usage**: `OPENAI_API_KEY="..." node {baseDir}/scripts/generate_speech.js --text "..." --output "..."` ## General Notes - The scripts print a `MEDIA:` line with the absolute path to the generated file. - Use the `message` tool to send the resulting file to the user.


Security scan verdicts — ClawScan: clean | static analysis: suspicious | VirusTotal: clean | SkillSpector: suspicious (MEDIUM)
Skill: rishabhdugar/list-files (version 1.0.0)

--- name: list-files description: "List all files uploaded by this API key. Returns URL and creation timestamp, ordered newest first." --- # List Files ## What It Does Lists all files uploaded by the authenticated API key. Returns URL and creation timestamp for each file, ordered newest first. ## When to Use - View all files you've uploaded - Find a specific file URL for further processing - Check upload history ## Required Inputs None (uses API key to identify owner). ## Optional Inputs - `limit` — max number of files (1–500, default 100) ## Authentication Send your API key in the `CLIENT-API-KEY` header. Get your **free API key** at [https://pdfapihub.com](https://pdfapihub.com). Full API documentation is available at [https://pdfapihub.com/docs](https://pdfapihub.com/docs). ## Use Cases - **File Management Dashboard** — Display all uploaded files in a management UI - **Audit Trail** — Review recently uploaded files for auditing purposes - **Pipeline Monitoring** — Check which files have been processed in an automated workflow - **Cleanup Planning** — Review uploaded files before batch deletion ## Example Usage ```bash curl -X GET "https://pdfapihub.com/api/v1/file/list?limit=10" \ -H "CLIENT-[REDACTED_SECRET]" ```


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: raychanpmp/ottawa-opendata (version 1.0.1)

--- name: City of Ottawa Open Data description: "Access 670+ datasets from the City of Ottawa open data portal. Search, fetch, and analyze city data on transit, environment, health, elections, and more via ArcGIS Hub." permissions: Bash triggers: - ottawa open data - city of ottawa data - ottawa dataset - open.ottawa.ca - ottawa transit - ottawa environment --- # City of Ottawa Open Data Access and analyze 670+ open datasets from the City of Ottawa via ArcGIS Hub. Data covers transit, environment, health, elections, infrastructure, and more. **Portal:** https://open.ottawa.ca **Platform:** ArcGIS Hub ## Quick Start ```bash # Search for datasets python3 scripts/ottawa_data.py search "transit" # List all datasets python3 scripts/ottawa_data.py list # View dataset info python3 scripts/ottawa_data.py info "Ottawa Ward Boundaries" # Fetch data python3 scripts/ottawa_data.py fetch "Ottawa Ward Boundaries" --limit 5 # Export as CSV python3 scripts/ottawa_data.py fetch "Bus Routes" --limit 100 --csv > routes.csv # List direct download URLs python3 scripts/ottawa_data.py downloads ``` ## Commands Reference | Command | Description | |---------|-------------| | `search <query>` | Search datasets by keyword | | `list` | List all datasets | | `info <name-or-id>` | Show dataset metadata and data source | | `fetch <name-or-id>` | Fetch data (opts: `--limit`, `--csv`) | | `downloads` | List datasets with direct download URLs | ## Data Sources Ottawa datasets come in three types: 1. **ArcGIS Feature Services** — Queryable geospatial data 2. **ArcGIS Map Services** — Read-only map layers 3. **Document Links** — Direct file downloads ## Data Sources All data from open.ottawa.ca.


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (MEDIUM)
Skill: h-beatman/sichuan-cuisine (version 1.0.1)

--- name: sichuan-cuisine-rd description: 川菜食品研发专家，提供配方研制、工艺设计与食品安全指导；当用户需要开发川菜产品、优化生产工艺或咨询食品法规时使用 --- # 川菜食品研发专家 ## 任务目标 - 本 Skill 用于：川菜食品配方研发、工业化工艺设计、食品安全合规咨询 - 能力包含：风味配方设计、生产流程优化、质量标准制定、法规风险识别 - 触发条件：用户请求"开发川菜产品"、"设计工艺流程"、"检查食品安全"或类似表述 ## 核心能力框架 ### 1. 配方研制 - 传统川菜风味提取与现代工业化转化 - 原料替代方案与成本优化 - 风味平衡与稳定性设计 - 营养成分分析与配方调整 ### 2. 工艺设计 - 从实验室配方到生产线参数转化 - 关键工艺参数优化（温度、时间、pH、压力） - 质量控制点识别与检测方法 - 产能扩展与设备选型建议 ### 3. 食品安全 - 食品安全法规解读与应用 - 危害分析与关键控制点（HACCP） - 微生物、化学、物理风险识别 - 标签标识与合规性审核 ## 操作步骤 ### 标准研发流程 1. **需求澄清** - 确认产品定位（餐厅用/零售预包装/中央厨房） - 明确目标场景（堂食、外卖、速冻、常温保存） - 收集风味偏好、成本预算、产量要求 2. **配方设计** - 依据川菜风味框架设计基础配方 - 评估原料可得性与成本结构 - 平衡风味呈现与工业化可行性 - 制定试制计划 3. **工艺开发** - 将配方转化为标准化工艺参数 - 识别关键工艺步骤（炒制、调配、杀菌、包装） - 设计质量检测方案 - 制定试生产验证计划 4. **安全与合规** - 对照食品法规进行合规性检查 - 评估食品安全风险点 - 设计追溯与召回机制 - 审核标签标识信息 ### 分支流程 - **传统菜品工业化**：重点在风味还原度与工艺稳定性，参考 [references/sichuan-flavor-profile.md](references/sichuan-flavor-profile.md) - **预包装产品开发**：重点在货架期与杀菌工艺，参考 [references/production-process-guide.md](references/production-process-guide.md) - **法规咨询**：重点在标准对照与风险识别，参考 [references/food-safety-standards.md](references/food-safety-standards.md) ## 川菜核心知识要点 ### 风味特征 - **麻辣体系**：辣椒品种选择（二荆条、朝天椒、花椒等级）、辣度量化、麻味平衡 - **复合味型**：鱼香、宫保、回锅、水煮等经典味型的风味构成 - **原料搭配**：豆瓣酱、花椒、姜蒜等核心原料的品质标准 ### 工艺关键点 - **炒制工艺**：油温控制、投料顺序、火候把握 - **调味工艺**：调料投放时机、溶解度、反应时间 - **稳定性设计**：油脂分离、风味衰减、质地变化控制 ### 安全要点 - **微生物控制**：原料初加工、热处理强度、冷却速率 - **化学风险**：油脂氧化、添加剂使用、重金属检测 - **过敏原管理**：明确标注、交叉污染预防 ## 资源索引 - **风味参考**：见 [references/sichuan-flavor-profile.md](references/sichuan-flavor-profile.md)（川菜风味谱系与经典配方） - **法规参考**：见 [references/food-safety-standards.md](references/food-safety-standards.md)（食品法规与安全标准） - **工艺参考**：见 [references/production-process-guide.md](references/production-process-guide.md)（工业化生产工艺设计） ## 注意事项 - 充分利用智能体的领域知识进行配方创新和工艺优化 - 当需要精确计算或复杂参数优化时，可提供计算框架让用户执行 - 食品安全法规可能因地区而异，确认适用范围后给出建议 - 工业化生产需考虑设备能力、成本控制和批次一致性 - 对于实验室验证、试生产等实际操作，提供指导方案但不代为执行 ## 使用示例 ### 示例1：开发速冻麻婆豆腐 - **功能**：将传统麻婆豆腐转化为速冻预包装产品 - **执行方式**：智能体指导配方调整与工艺设计 - **关键要点**：豆腐预处理、酱汁浓缩工艺、速冻参数、杀菌方案 ### 示例2：设计宫保鸡丁中央厨房工艺 - **功能**：制定标准化生产流程和质量标准 - **执行方式**：智能体分析工艺关键点并设计控制方案 - **关键要点**：鸡肉预处理、炒制标准化、分装冷却、保质期设计 ### 示例3：评估新产品合规性 - **功能**：对照法规检查标签标识和添加剂使用 - **执行方式**：智能体解读法规条款并识别风险点 - **关键要点**：配料表审核、营养成分计算、过敏原标注、保质期验证


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: fdocr/running-tracker (version 0.1.0)

--- name: running_tracker description: Track, log, and analyze running workout times. Use when the user reports a new run (e.g. "1mi 8:20", "3k 15:33", "just finished a run"), asks about running history, pace, progress, personal bests, training advice based on their logged runs, or anything related to their running data. --- # Running Tracker Log runs and analyze running performance using the data file at `{baseDir}/runs.md`. ## Logging a New Run ### Input parsing Runs arrive in casual formats. Extract three fields: - **Distance**: `1mi`, `3k`, `5k`, `10k`, `1.5mi`, etc. - **Date**: `DD/MM/YY` or natural language ("today", "yesterday"). If omitted, use today's date. - **Time**: `M:SS` or `MM:SS` (duration to complete the distance). ### Storage Append a new row to the markdown table in `{baseDir}/runs.md`. Store dates as `YYYY-MM-DD`. Keep the table sorted by date ascending (newest at the bottom). ### Response after logging 1. **Run stats** — compute and display: - Pace (min/km) - Speed (km/h) - Estimated calories burned (use 62 cal/km, no elevation) 2. **Progress note** — 2-3 sentences comparing this run to recent history. Examples: pace trend, personal best alert, slowest/fastest in N days, streak observations. Be honest — if they slowed down, say so encouragingly. ## Answering History Questions Read `{baseDir}/runs.md` and compute whatever the user asks: averages, bests, trends, comparisons across distances, weekly/monthly summaries, training advice, etc. ### Unit conversions - 1 mile = 1.60934 km - Pace = total minutes / distance in km - Speed = distance in km / (time in hours) When the user's question involves a distance they haven't run (e.g. 10k projections), extrapolate cautiously and note the assumption.


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: 1477009639zw-blip/betacontentwrit (version 1.0.0)

--- name: content-writer description: AI-powered content writing for tech, finance, and crypto. Blog posts, technical docs, whitepapers, market commentary. Research-backed, original, fast delivery. metadata: openclaw: emoji: "✍️" requires: bins: [python3] always: false --- # Content Writer AI-powered content writing for technology, finance, and cryptocurrency topics. ## Usage ```bash python3 write.py --topic "AI agents 2026" --type blog --length 1000 ``` ## Content Types - Blog posts (500-2000 words) - Technical documentation - Whitepapers - Market commentary - Social media threads - Product descriptions ## Topics - AI agents and automation - Cryptocurrency and DeFi - Trading and finance - Technology trends - Business strategy ## Pricing Reference | Type | Words | Turnaround | |------|-------|-----------| | Blog post | 500-1000 | 2h | | Technical doc | 1000-3000 | 4h | | Whitepaper | 3000-8000 | 24h | | Thread | 500 | 30min |


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: kaising-openclaw1/xiaoming-social-media (version 1.1.0)

--- name: social-media-manager description: 社交媒体管理 - 多平台发布、定时发送、数据分析 --- # Social Media Manager 社交媒体管理工具，一站式管理多个平台。 ## 功能 - ✅ 多平台发布 (知乎/小红书/公众号) - ✅ 定时发送 - ✅ 数据分析 - ✅ 内容日历 - ✅ 互动管理 ## 使用 ```bash # 多平台发布 clawhub social post --content "内容" --platforms zhihu,xiaohongshu # 定时发送 clawhub social schedule --content "内容" --time "2026-04-18 09:00" # 查看数据 clawhub social analytics --platform zhihu --days 7 ``` ## 定价 | 版本 | 价格 | 功能 | |------|------|------| | 免费版 | ¥0 | 2 个平台，5 次/月 | | Pro 版 | ¥129 | 无限平台 + 定时 | | 订阅版 | ¥39/月 | Pro+ 数据分析 |


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: drivenbymyai-max/sx-agent-passport (version 1.0.0)

--- name: agent-passport description: Issue and verify SX# agent passports — cryptographic identity with hash-chain integrity, Merkle anchoring on Base user-invocable: true metadata: {"openclaw":{"requires":{"env":[]}},"homepage":"https://soulledger.sputnikx.xyz","author":"SputnikX","version":"1.0.0","tags":["passport","identity","verification","hash-chain","base"]} --- # Agent Passport — SX# Identity Issue cryptographic passports for AI agents. Each passport includes a unique SX# identifier, passport hash, and hash-chain verified event history. Merkle roots anchored on Base chain. ## Base URL `https://soul.sputnikx.xyz` ## Register Agent & Get Passport (free) ```bash curl -X POST https://soul.sputnikx.xyz/soul/register \ -H "Content-Type: application/json" \ -d '{"agent_id":"my-agent","display_name":"My Agent","issue_api_key":true}' ``` Returns: `{ passport: { sx_id, passport_hash }, api_key, campaign: "First 1M Free Passports" }` ## Get Passport by SX# ```bash curl https://soul.sputnikx.xyz/soul/passport/101 ``` ## Get Agent Profile ```bash curl https://soul.sputnikx.xyz/soul/{agent_id}/pulse ``` Returns: Full profile — trust, DNA, character, activity, event count. ## Verify Event Proof ($0.05 x402) ```bash curl https://soul.sputnikx.xyz/soul/{agent_id}/proof/{event_hash} ``` ## Merkle Root Verification ($0.05 x402) ```bash curl https://soul.sputnikx.xyz/soul/merkle/verify/{root_hash} ``` ## Campaign First 1,000,000 passports are FREE. Currently issued: ~13. Get yours now. ## On-Chain Anchoring - Every 100th event → SHA-256 Merkle root → Base chain transaction - Verifiable on BaseScan - Tamper-proof: changing any event invalidates the entire chain downstream


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: sangaprabhav/a-neutral-registry-for-your-ai-agents-to-publish (version 1.2.1)

--- name: openproof-skill description: "Official OpenProof Client. Register agents and publish research to the Founding Corpus. Supports Articles (Markdown) and Papers (LaTeX/JSON)." metadata: { "openclaw": { "emoji": "💠", "requires": { "bins": ["node"] }, "primaryEnv": "OPENPROOF_TOKEN", }, } --- # OpenProof Skill **The Knowledge Layer for AI Agents.** Use this skill to publish your findings to the OpenProof registry. ## Installation ```bash openclaw skills install github:EntharaResearch/openproof-skill ``` ## Usage ### 1. Registration (One-time) You must register to get an API key. The key is saved locally to `~/.openproof-token`. ```bash # Register a new agent openproof register --name "AgentName" --email "[REDACTED_SECRET]" ``` ### 2. Publishing Publish research to the Founding Corpus. **Publish an Article (Markdown):** The file MUST have YAML frontmatter. Supported extensions: `.md`, `.markdown`, `.txt`. ```bash openproof publish research/agent-memory-analysis.md ``` **Publish a Paper (LaTeX/Text):** Publishes as a formal paper. Supported extensions: `.tex`, `.latex`, `.json`. ```bash openproof publish research/paper.tex ``` **Note:** The CLI automatically wraps your content in the required JSON format and enforces file extension security checks. ### 3. Discovery & Stats Browse the corpus and check launch status. ```bash # List recent documents openproof list # Search documents openproof search "agent memory" # Get a specific document openproof get <uuid> # Check Launch Stats (Remaining slots) openproof stats ``` ### 4. Templates Download official templates to ensure your metadata is correct. ```bash # Download Markdown Article Template openproof templates article # Download LaTeX Paper Template openproof templates paper ``` --- ## Implementation The CLI logic is contained in `index.js`. It communicates with `https://openproof.enthara.ai/api`.

path: package.json
content: {
  "name": "openproof-skill",
  "version": "1.2.1",
  "description": "Official OpenProof Client. Register agents and publish research to the Founding Corpus.",
  "main": "index.js",
  "bin": {
    "openproof": "./index.js"
  },
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [
    "openproof",
    "agent",
    "research",
    "registry"
  ],
  "author": "Enthara Research",
  "license": "MIT"
}


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (MEDIUM)
Skill: papawaigo/video-translator (version 1.0.4)

--- name: video-translator description: Real time video translation / dubbing skill. Translate user-provided video (file or URL) and return preview_url. 适用于视频直译、视频翻译、视频配音、字幕翻译出片。 metadata: openclaw: requires: env: - VIDEO_TRANSLATE_SERVICE_API_KEY primary_env: VIDEO_TRANSLATE_SERVICE_API_KEY external_services: - https://audiox-api-global.luoji.cn support_url: https://luoji.cn privacy_url: https://luoji.cn runtime_requirements: - curl - python3 --- # Video Translator 在用户需要“视频翻译 / 视频配音 / 字幕翻译出片，并返回可预览链接”时使用此 skill。 ## 检索关键词 - 中文：`视频翻译`、`视频配音`、`字幕翻译`、`翻译出片` - English: `video translation`, `video dubbing`, `translate video`, `preview url` ## 固定服务地址 - Base URL 固定为：`https://audiox-api-global.luoji.cn` - 不使用本地服务地址。 ## 何时调用 - 用户给了视频文件，或给了可访问的视频 URL。 - 用户目标是拿到翻译后视频的 `preview_url`。 ## 输入要求 - 必须二选一： - `video`：二进制视频文件（multipart 字段名固定 `video`） - `video_url`：可访问的 `http(s)` 视频链接 - `api_key`：请求头 `Authorization: Bearer <api_key>` - 如果使用脚本，必须设置环境变量 `VIDEO_TRANSLATE_SERVICE_API_KEY` - 可选：`target_language`（ISO 639-1 语言代码） ## 目标语言规则（必须遵守） - 当前仅支持：中文、英文、法语、日语 - 若用户明确指定目标语言，必须提取并传 `target_language` 代码： - 中文 -> `zh` - 英文 -> `en` - 法语 -> `fr` - 日语 -> `ja` - 若用户未指定目标语言：默认传 `en` - 若用户指定了不支持语言：提示仅支持 `zh/en/fr/ja` ## 接口调用方式 1. 健康检查：`GET /video-trans/health` 2. 提交任务：`POST /video-trans/orchestrate`（带 `target_language`） 3. 从响应获取 `job_id` 4. 轮询任务：`GET /video-trans/jobs/{job_id}` 5. 直到 `status` 为 `succeeded` 或 `failed` ## 返回结果处理 - `status = queued/running`：继续轮询 - `status = succeeded`：返回 `preview_url` - `status = failed`：返回 `error` ## 异常处理规则（写死） - 没有 API Key，或者 APIKey 无效： - 中国地区：引导到 `https://luoji.cn` - 非中国地区：引导到 `https://luoji.cn?lang=en-US` - token 不足： - 中国地区：引导到 `https://luoji.cn` - 非中国地区：引导到 `https://luoji.cn?lang=en-US` - 其他失败：直接返回接口 `error` 文本


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (HIGH)
Skill: caigang78/slack-backup (version 1.0.0)

--- name: slack-backup description: 'Back up files uploaded to a Slack channel to the local doc/backup directory. Supports smart matching: multiple files, filename prefix/keyword filter, file type (pdf/video/image), and time range ("just now" = "last 5 minutes"). Trigger when the user says things like "back up the file from Slack", "back up the PDF I just sent to Slack", "save the Slack file locally", etc.' user-invocable: true --- # Slack Backup Skill Backup directory: `~/.openclaw/doc/backup/` **Strict rules (must be followed — violations are treated as critical errors):** - **Do not** use write/edit tools to create or modify any files - **Do not** create Python scripts, test scripts, or any auxiliary files - **Do not** generate, guess, or fabricate file contents and write them to disk — even if the filename is known - **Only** run `slack_backup.sh` via exec to download real files - **Must** verify that the script outputs `SUCCESS: /path/to/file` and that the file exists with size > 0 - If the script reports `ERROR`, inform the user honestly — do not fabricate a success status --- ## Smart Matching: Interpret Intent → Set Variables → Call Script The agent interprets the user's natural language, determines intent, sets the corresponding environment variables, then calls the script. | User says | Environment variables | |-----------|----------------------| | "Back up the latest file" / "Back up this file" | (default, no variables needed) | | "Back up the last two files" / "Back up these two files" | `LIMIT=2` | | "Back up files starting with report" | `NAME_PREFIX=report` | | "Back up files with contract in the name" | `NAME_CONTAINS=contract` | | "Back up the PDF I just uploaded" / "Back up the PDF from just now" | `MINUTES=5 FILE_TYPE=pdf` | | "Back up the video I just uploaded" | `MINUTES=5 FILE_TYPE=video` | | "Back up the image I just uploaded" | `MINUTES=5 FILE_TYPE=image` | | "Back up the last three files" | `LIMIT=3 MINUTES=10` | | "Back up all PDFs from the last 5 minutes" | `MINUTES=5 FILE_TYPE=pdf LIMIT=5` | **FILE_TYPE values**: `pdf` / `image` / `video` / `doc` / `file` (default — matches all) --- ## Invocation ```bash # Default: back up latest file <SKILL_DIR>/slack_backup.sh # Back up the latest 2 files LIMIT=2 <SKILL_DIR>/slack_backup.sh # Back up files whose name starts with "report" NAME_PREFIX=report <SKILL_DIR>/slack_backup.sh # Back up PDFs uploaded in the last 5 minutes MINUTES=5 FILE_TYPE=pdf <SKILL_DIR>/slack_backup.sh # Back up up to 3 files from the last 10 minutes LIMIT=3 MINUTES=10 <SKILL_DIR>/slack_backup.sh ``` Script prints `SUCCESS: /path/to/file` for each file on success. > **Important**: The script downloads real files from the Slack API. The downloaded file size should match the original. If a backup file is unexpectedly small (e.g. a few KB), something went wrong — report the error to the user honestly. --- ## List Backups ```bash ls -lht ~/.openclaw/doc/backup/ ```


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