OpenClaw/clawhub-security-signals huggingface dataset:
Skill: zacjiang/rss-feed-digest (version 1.0.0)

--- name: rss-digest description: Fetch, filter, and summarize RSS/Atom feeds into a clean daily or weekly digest. Supports multiple feeds, keyword filtering, deduplication, and outputs Markdown or plain text summaries. author: zacjiang version: 1.0.0 tags: rss, atom, feed, news, digest, summary, newsletter, monitoring, automation --- # RSS Feed Digest Aggregate multiple RSS/Atom feeds into a clean, summarized digest. Perfect for automated newsletters, news monitoring, or daily briefings. ## Usage ### Fetch and display recent items ```bash python3 {baseDir}/scripts/rss_digest.py fetch \ --feeds "https://hnrss.org/frontpage" "https://feeds.arstechnica.com/arstechnica/technology-lab" \ --hours 24 \ --limit 20 ``` ### Filter by keywords ```bash python3 {baseDir}/scripts/rss_digest.py fetch \ --feeds "https://hnrss.org/frontpage" \ --keywords "AI,LLM,agent,OpenClaw" \ --hours 48 ``` ### Output as Markdown file ```bash python3 {baseDir}/scripts/rss_digest.py fetch \ --feeds "https://hnrss.org/frontpage" \ --output digest.md \ --format markdown ``` ### Use a feed list file ```bash # Create feeds.txt with one URL per line python3 {baseDir}/scripts/rss_digest.py fetch \ --feed-file feeds.txt \ --hours 24 ``` ## Features - 📰 Supports RSS 2.0 and Atom feeds - 🔍 Keyword filtering (include/exclude) - 🔄 Deduplication across multiple feeds - 📅 Time-based filtering (last N hours) - 📝 Markdown or plain text output - 📋 Feed list file support for managing many sources ## Dependencies ```bash pip3 install feedparser ``` ## Example: Daily AI News Digest ```bash # feeds.txt https://hnrss.org/frontpage https://feeds.arstechnica.com/arstechnica/technology-lab https://www.artificialintelligence-news.com/feed/ https://openai.com/blog/rss.xml # Run daily via cron python3 rss_digest.py fetch --feed-file feeds.txt --keywords "AI,LLM,GPT,Claude,agent" --hours 24 --output /tmp/daily-ai-digest.md ``` ## Use Cases - **Daily briefings**: Summarize industry news for your team - **Newsletter automation**: Generate content for Beehiiv/Substack newsletters - **Competitive monitoring**: Track mentions of competitors or keywords - **Research**: Aggregate academic/industry feeds on a topic - **Heartbeat integration**: Run during OpenClaw heartbeat to check for relevant news


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: hello-ahang/flyai-companion-matcher (version 1.0.1)

--- name: flyai-companion-matcher description: 旅伴匹配度报告——出发前先测你们合不合适！帮助旅伴在出发前做"旅行风格匹配度测试"，提前发现分歧点，并给出基于真实酒店/景点数据的兼顾方案。当用户提到"旅伴测试"、"旅行风格匹配"、"一起旅行合不合适"、"旅伴匹配度"、"旅行冲突"、"旅伴风格"、"出行前测试"、"和XX一起旅行"时使用。 --- # 旅伴匹配度报告 — 出发前先测你们合不合适 你是一个旅伴关系分析师，专门帮助用户在出发前分析旅伴之间的旅行风格差异，预判潜在冲突，并用真实数据给出调和方案。 ## 核心价值 旅行是检验关系的试金石。很多人出发前不了解同伴的旅行风格，结果： - 一个想打卡一个想躺平 - 一个想省钱一个想享受 - 一个早起暴走一个睡到自然醒 **我的使命**：在出发前帮旅伴做"风格匹配测试"，提前发现分歧点，用真实数据给出兼顾双方的调和方案。 ## 能力清单 | 能力 | 说明 | |-----|------| | 🎯 匹配度分析 | 分析双方旅行风格的契合度，给出匹配度评分 | | ⚠️ 冲突预警 | 识别节奏差异、住宿标准、拍照习惯等潜在冲突点 | | 💊 调和方案 | 基于FlyAI真实数据，给出兼顾双方的酒店/景点推荐 | | 📋 旅行公约 | 生成出发前约定，减少旅途中的争执 | | 🔗 一键预订 | 每个推荐都附带预订链接，选中即可行动 | --- ## 工作流程 > 详细步骤见 [reference/workflow.md](reference/workflow.md) **核心阶段：** 1. 收集旅伴信息 - 交互式问卷收集双方旅行风格 2. 分析匹配度 - 5维度评分（节奏/住宿/拍照/餐饮/消费） 3. 搜索调和方案 - 调用 FlyAI 搜索折中酒店/景点 4. 生成匹配报告 - 冲突预警 + 调和建议 + 预订链接 ## 调和方案策略库 > 详见 [reference/strategies.md](reference/strategies.md) ## 特殊场景处理 | 场景 | 处理方式 | |-----|---------| | 旅伴不愿意做测试 | 支持用户单方面描述"我觉得TA是XX风格"，AI做单边预测 | | 两人偏好完全冲突（匹配度<30%）| 诚实告知"差异较大"，但积极给出调和方案 + 幽默化表达 | | 多人旅行（3人以上）| 支持多人分别作答，取最大公约数 | | 调和方案中的酒店/景点搜不到 | 降级为纯建议文字，不挂载具体搜索结果 | | FlyAI 返回空结果 | 调整搜索条件或用 ai-search/keyword-search 广泛搜索 | | SSL 证书验证失败 | 命令前加 `NODE_TLS_REJECT_UNAUTHORIZED=0` | --- ## FlyAI 能力调用清单 本技能会调用以下 FlyAI 命令： | 命令 | 用途 | 参考文档 | |-----|------|----------| | `flyai search-hotel` | 搜索折中酒店方案 | `reference/search-hotel.md` | | `flyai search-poi` | 搜索景点并分类标注 | `reference/search-poi.md` | | `flyai search-flight` | 搜索机票 | `reference/search-flight.md` | | `flyai search-train` | 搜索火车票 | `reference/search-train.md` | | `flyai search-marriott-hotel` | 搜索万豪集团酒店 | `reference/search-marriott-hotel.md` | | `flyai search-marriott-package` | 搜索万豪集团套餐产品 | `reference/search-marriott-package.md` | | `flyai ai-search` | 综合语义搜索（用于复杂需求）| `reference/ai-search.md` | | `flyai keyword-search` | 广泛关键词搜索 | `reference/keyword-search.md` | **每个搜索结果都会提取预订链接，确保用户可以直接点击预订。** > ⚠️ **重要**：调用任何命令前，必须先阅读对应的 `reference/` 文档，了解确切的参数格式和返回字段。不要猜测或复用其他命令的参数格式。 ## 友好展示规范 ### 通用原则 输出必须是有效的 `markdown`，采用富文本+图片展示。如果数据包含预订链接必须展示，如果数据包含图片也必须展示，且**图片**必须出现在**预订链接**之前。 ### 图片展示 - 格式：独立一行 `![]({imageUrl})` - URL 映射： - `search-hotel` → `mainPic` - 其他命令 → `picUrl` ### 预订链接展示 - 格式：独立一行 `[点击预订]({url})` - URL 映射： - `search-hotel` → `detailUrl` - `search-flight` → `jumpUrl` - `search-poi` → `jumpUrl` - `keyword-search` → `jumpUrl` --- ## 自我成长能力 > 详见 [reference/self-growth.md](reference/self-growth.md) ## 用户偏好保存（双模式） 发现新偏好时提示保存。详见 [reference/user-profile-storage.md](reference/user-profile-storage.md) **保存流程**：发现偏好 → 提示确认 → Qoder用update_memory / 非Qoder更新本地文件 --- ## 示例对话 > 详见 [reference/examples.md](reference/examples.md)


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (CRITICAL)
Skill: ant-1984/openant (version 1.0.0)

--- name: openant description: Work with OpenAnt — the Human–Agent collaboration platform. Manage tasks, teams, AI agents, wallets, and messaging via CLI. Use when the user mentions OpenAnt, bounties, task management, agent marketplace, or on-chain collaboration. --- # OpenAnt Platform OpenAnt is a Human–Agent collaboration platform. Use the CLI for tasks, teams, agents, wallets, and messaging. ## CLI Invocation ```bash npx @openant-ai/cli@latest <command> [options] ``` **Always append `--json`** for machine-readable output. Requires Node.js >= 18. ## Authentication ```bash npx @openant-ai/cli@latest login # Interactive OTP via email npx @openant-ai/cli@latest whoami --json npx @openant-ai/cli@latest status --json ``` ## Key Commands | Domain | Examples | |--------|----------| | **Tasks** | `tasks list`, `tasks create --title "..." --description "..." --reward 50`, `tasks accept <id>`, `tasks submit <id>` | | **Teams** | `teams list`, `teams create --name "My Team"`, `teams join <id>` | | **Agents** | `agents register --name "MyAgent"`, `agents update-profile`, `agents heartbeat` | | **Wallet** | `wallet balance --json`, `wallet addresses` | | **Messages** | `messages conversations`, `messages send <userId> --content "..."` | ## Task Lifecycle (Typical) 1. Create: `tasks create --title "..." --description "..." --reward <amount> [--token USDC] [--tags dev,solana]` 2. Fund: `tasks fund <id>` (if DRAFT) 3. Accept / Apply: `tasks accept <id>` or `tasks apply <id> --message "..."` 4. Submit: `tasks submit <id> --text "..." [--proof-url <url>]` 5. Verify: `tasks verify <id> --submission <subId> --approve` ## Task Modes - `OPEN` — Anyone can accept (default) - `APPLICATION` — Creator reviews applications, selects winner - `DISPATCH` — Creator assigns directly ## Configuration Config: `~/.openant/config.json`. Env: `OPENANT_API_URL`, `SOLANA_RPC_URL`, `BASE_RPC_URL`. ## Related Skills Project `openant-skills` provides deeper skills: `create-task`, `comment-on-task`, `send-message`, `send-token`, etc. Use them for detailed workflows.


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: caoyachao/github-to-rednote (version 1.6.0)

--- name: github-to-rednote description: Convert GitHub repositories into RedNote (小红书) style technical articles. Use when user wants to generate tech promotion content from GitHub repos - including project intros, reviews, tutorials, tool lists, or release notes. Supports 5 article templates with emoji formatting and hashtag tags. --- # GitHub to RedNote Convert GitHub repositories into RedNote-style technical articles. ## Overview This skill transforms GitHub repository information into engaging RedNote (小红书) formatted articles suitable for Chinese tech community promotion. **Supported Article Types:** 1. **Intro** - Project recommendation/overview 2. **Review** - Technical review and evaluation 3. **Tutorial** - Usage guide and tutorial 4. **List** - Tool collection/list 5. **Release** - Version release notes ## Quick Start ```bash # Basic usage - generate intro article python3 scripts/generate_article.py <github-url> # Specify article type python3 scripts/generate_article.py <github-url> --type review # Save to file python3 scripts/generate_article.py <github-url> --output article.md ``` ## Workflow 1. **Parse URL** - Extract owner/repo from GitHub URL 2. **Fetch Data** - Get repo info, README, languages via GitHub API 3. **Generate Content** - Use LLM to create RedNote-style article 4. **Format Output** - Apply emoji formatting and hashtags ## Article Types ### 1. Intro (项目推荐) Project introduction and recommendation - Focus: What it does, key features, why use it - Style: Enthusiastic but technical ### 2. Review (项目测评) Technical review and evaluation - Focus: Pros/cons, use cases, comparison - Style: Objective analysis ### 3. Tutorial (使用教程) Usage guide - Focus: Installation, quick start, examples - Style: Step-by-step instructions ### 4. List (工具合集) Tool collection - Focus: Multiple related tools, categorized - Style: Curated list with brief descriptions ### 5. Release (版本发布) Version release notes - Focus: New features, changes, migration - Style: Changelog format ## Output Format RedNote style includes: - Emoji decorations (🔥💡⚡️🚀) - Section dividers - Topic hashtags (#技术分享 #开源项目 #程序员) - Concise paragraphs (适合手机阅读) ## Resources ### scripts/ - `generate_article.py` - Main script for article generation - `github_api.py` - GitHub API wrapper - `formatters.py` - RedNote formatting utilities ### references/ - `prompts.md` - LLM prompt templates for each article type - `rednote-style.md` - RedNote formatting guidelines ### assets/ - Templates and example outputs


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (HIGH)
Skill: v3ads/email-outreach (version 1.0.0)

--- name: email-outreach description: Automated email outreach campaign builder and optimizer. Use when asked to write cold emails, build outreach sequences, create follow-up cadences, personalize email templates at scale, audit existing email copy for deliverability and response rates, generate subject line variants, or build lead lists. Triggers on phrases like "cold email", "outreach sequence", "email campaign", "follow-up emails", "personalize emails", "email templates", "improve open rates", "sales emails", "lead outreach". --- # Email Outreach Skill Build high-converting email outreach sequences. Every output should be ready to send — no filler, no fluff. ## Workflow ### 1. Understand the Campaign Gather (ask if not provided): - **Sender context**: Who are you? What's your offer? - **Target persona**: Job title, industry, company size, pain points - **Goal**: Book a call / get a reply / drive to a link - **Sequence length**: 1 shot or multi-touch (recommend 4–6 touch cadence) ### 2. Build the Sequence Use the frameworks in `references/copywriting-frameworks.md`. Standard high-converting structure: - **Email 1 (Day 1)**: Pattern interrupt opener + specific problem + one-line offer + soft CTA - **Email 2 (Day 3)**: Social proof / case study angle + question CTA - **Email 3 (Day 7)**: Different angle / objection pre-empt + value add (resource/insight) - **Email 4 (Day 14)**: Breakup email — short, direct, creates urgency ### 3. Personalization Variables Build templates with `{{variables}}` for mail-merge personalization: - `{{first_name}}`, `{{company}}`, `{{industry}}`, `{{pain_point}}`, `{{recent_news}}` - Generate 3 "custom first line" variants they can rotate per segment ### 4. Subject Line Variants Generate 5 subject line options per email: - Question format - Curiosity gap - Direct/transactional - Name/company personalized - Contrarian/pattern interrupt ### 5. Deliverability Check Run `scripts/deliverability_check.py` against the email copy to flag: - Spam trigger words - HTML-heavy formatting risks - Link-to-text ratio issues - Subject line length (40–60 chars ideal) - Preheader text presence ### 6. Output Format Deliver as: - Numbered sequence with day gaps labeled - Each email: Subject | Preheader | Body | CTA - Personalization notes per email - A/B test recommendations See `references/copywriting-frameworks.md` for proven frameworks (AIDA, PAS, Before/After/Bridge). See `assets/sequence-template.md` for a ready-to-copy campaign template.


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (HIGH)
Skill: yezhaowang888-stack/us-tariff-query (version 1.1.0)

--- name: 🇺🇸 美国最新关税政策查询 description: 查美国对XX产品的最新关税政策/税率变化/豁免条款。无需API Key，安装即用。 metadata: {"openclaw":{"emoji":"🇺🇸","requires":{"tools":["tavily-web","web_fetch"]}}} --- # 🇺🇸 美国最新关税政策查询 > **无需API Key，安装即用。** 输入产品名称或HS编码，自动查询美国对该产品的最新关税政策、税率变化和豁免信息。 ## 适用场景 - **跨境电商卖家**：查美国对XX产品的最新关税变化 - **外贸企业**：确认当前关税税率和合规要求 - **供应链管理者**：关注301条款/豁免到期日 - **政策研究者**：获取美国贸易政策最新动态 ## 使用示例 ``` 用户: "查美国对太阳能组件的最新关税政策" 返回: 当前税率 | 最新变化 | 豁免条款 | 合规建议 用户: "HS编码 8504.40 的美国进口关税" 返回: 产品分类 | 关税税率 | 许可证要求 | 特殊规定 用户: "美国对中国钢铁产品的最新关税变化" 返回: 当前税率 | 历史变化 | 301条款状态 | 豁免到期日 用户: "中美贸易摩擦对电子产品的影响" 返回: 加征清单 | 排除程序 | 替代方案 | 时间线 ``` ## 🔧 校准框架 本Skill搭载惠迈校准框架 v1.0。 ### 快速校准（每次加载） - ✅ API查询通道可用性检测 - ✅ 数据源时效性检查 - ✅ 温情模式输出验证 ### 标准校准（首次安装） - ✅ 与其他已安装政策查询Skill的兼容性 - ✅ 多语言查询支持测试 - ✅ 边界场景（无效HS编码）处理 ## 🧭 模式选择 - **温情模式（默认）**：输出先给出摘要结论，再附详细数据，对可能有贸易风险的品类提供风险提示和改进建议 - **专业模式（可选）**：直出关税数据，适合熟手用户 ## 数据来源 - 美国国际贸易委员会 (USITC) - 美国海关与边境保护局 (CBP) - 美国贸易代表办公室 (USTR) - 联邦公报 (Federal Register) ## ⚠️ 免责声明 本Skill基于公开数据提供参考信息，不构成法律或贸易建议。 关税政策可能随时变化，请以美国官方最新公告为准。 ## 安装 ```bash clawhub install us-tariff-query ``` ## 📬 联系与反馈 - **作者**: Huimai AI - **邮箱**: [REDACTED_SECRET] - **反馈建议**: 欢迎邮件反馈使用问题或功能建议


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: aisadocs/stock-portfolio-aisa-api (version 1.0.0)

--- name: stock-portfolio description: "Create and manage stock crypto portfolios with live AISA pricing and P&L tracking. Use when: the user wants to add holdings, inspect portfolio performance, rename portfolios, or review current profit and loss." author: aisa version: "1.0.0" license: Apache-2.0 user-invocable: true primaryEnv: AISA_API_KEY requires: env: - AISA_API_KEY bins: - python3 metadata: openclaw: primaryEnv: AISA_API_KEY requires: env: - AISA_API_KEY bins: - python3 --- # Portfolio Management ## When to Use - Create and manage stock crypto portfolios with live AISA pricing and P&L tracking. Use when: the user wants to add holdings, inspect portfolio performance, rename portfolios, or review current profit and loss. ## When NOT to Use - Do not use this skill for browser-cookie extraction, passwords, Keychain access, or other local sensitive credential access. - Prefer a different skill when the user request is outside this skill's domain. ## Capabilities - Create, update, list, rename, and delete portfolios from the command line. - Track live P&L with repo-local state instead of default home-directory persistence. ## Quick Start ```bash export AISA_API_KEY="your-key" ``` ## Primary Runtime Use the bundled Python client as the canonical ClawHub runtime path: ```bash python3 scripts/portfolio.py ``` ## Example Queries - Create a portfolio for AI stocks and show the current P&L. ## Notes - Default state is stored in `./.clawdbot/skills/stock-analysis/portfolios.json` unless `CLAWDBOT_STATE_DIR` is set.


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (MEDIUM)
Skill: okradze/desearch-crawl (version 1.0.1)

--- name: desearch-crawl description: Crawl/scrape and extract content from any webpage URL. Returns the page content as clean text or raw HTML. Use this when you need to read the full contents of a specific web page. metadata: {"clawdbot":{"emoji":"🕷️","homepage":"https://desearch.ai","requires":{"env":["DESEARCH_API_KEY"]}}} --- # Crawl Webpage By Desearch Extract content from any webpage URL. Returns clean text or raw HTML. ## Quick Start 1. Get an API key from https://console.desearch.ai 2. Set environment variable: `export DESEARCH_API_KEY='your-key-here'` ## Usage ```bash # Crawl a webpage (returns clean text by default) scripts/desearch.py crawl "https://en.wikipedia.org/wiki/Artificial_intelligence" # Get raw HTML scripts/desearch.py crawl "https://example.com" --crawl-format html ``` ## Options | Option | Description | |--------|-------------| | `--crawl-format` | Output content format: `text` (default) or `html` | ## Examples ### Read a documentation page ```bash scripts/desearch.py crawl "https://docs.python.org/3/tutorial/index.html" ``` ### Get raw HTML for analysis ```bash scripts/desearch.py crawl "https://example.com/page" --crawl-format html ``` ## Response ### Example (`format=text`, truncated, default) ``` Artificial intelligence (AI) is the capability of computational systems to perform tasks that typically require human intelligence, such as learning, reasoning, problem-solving, perception, and decision-making... ``` ### Example (`format=html`, truncated) ```html <!DOCTYPE html> <html> <head><title>Artificial intelligence - Wikipedia</title></head> <body> <p>Artificial intelligence (AI) is the capability of computational systems...</p> </body> </html> ``` ### Notes - Response is plain text or raw HTML — not JSON. - Default format is `text`. Use `--crawl-format html` only when you need to inspect page structure. - Prefer `text` format to avoid bloating the agent context with markup. ### Errors Status 401, Unauthorized (e.g., missing/invalid API key) ```json { "detail": "Invalid or missing API key" } ``` Status 402, Payment Required (e.g., balance depleted) ```json { "detail": "Insufficient balance, please add funds to your account to continue using the service." } ``` ## Resources - [API Reference](https://desearch.ai/docs/api-reference/get-web-crawl) - [Desearch Console](https://console.desearch.ai)


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (MEDIUM)
Skill: googleworkspace-bot/gws-gmail-forward (version 1.0.14)

--- name: gws-gmail-forward description: "Gmail: Forward a message to new recipients." metadata: version: 0.22.5 openclaw: category: "productivity" requires: bins: - gws cliHelp: "gws gmail +forward --help" --- # gmail +forward > **PREREQUISITE:** Read `../gws-shared/SKILL.md` for auth, global flags, and security rules. If missing, run `gws generate-skills` to create it. Forward a message to new recipients ## Usage ```bash gws gmail +forward --message-id <ID> --to <EMAILS> ``` ## Flags | Flag | Required | Default | Description | |------|----------|---------|-------------| | `--message-id` | ✓ | — | Gmail message ID to forward | | `--to` | ✓ | — | Recipient email address(es), comma-separated | | `--from` | — | — | Sender address (for send-as/alias; omit to use account default) | | `--body` | — | — | Optional note to include above the forwarded message (plain text, or HTML with --html) | | `--no-original-attachments` | — | — | Do not include file attachments from the original message (inline images in --html mode are preserved) | | `--attach` | — | — | Attach a file (can be specified multiple times) | | `--cc` | — | — | CC email address(es), comma-separated | | `--bcc` | — | — | BCC email address(es), comma-separated | | `--html` | — | — | Treat --body as HTML content (default is plain text) | | `--dry-run` | — | — | Show the request that would be sent without executing it | | `--draft` | — | — | Save as draft instead of sending | ## Examples ```bash gws gmail +forward --message-id 18f1a2b3c4d --to [REDACTED_SECRET] gws gmail +forward --message-id 18f1a2b3c4d --to [REDACTED_SECRET] --body 'FYI see below' gws gmail +forward --message-id 18f1a2b3c4d --to [REDACTED_SECRET] --cc [REDACTED_SECRET] gws gmail +forward --message-id 18f1a2b3c4d --to [REDACTED_SECRET] --body '<p>FYI</p>' --html gws gmail +forward --message-id 18f1a2b3c4d --to [REDACTED_SECRET] -a notes.pdf gws gmail +forward --message-id 18f1a2b3c4d --to [REDACTED_SECRET] --no-original-attachments gws gmail +forward --message-id 18f1a2b3c4d --to [REDACTED_SECRET] --draft ``` ## Tips - Includes the original message with sender, date, subject, and recipients. - Original attachments are included by default (matching Gmail web behavior). - With --html, inline images are also preserved via cid: references. - In plain-text mode, inline images are not included (matching Gmail web). - Use --no-original-attachments to forward without the original message's files. - Use -a/--attach to add extra file attachments. Can be specified multiple times. - Combined size of original and user attachments is limited to 25MB. - With --html, the forwarded block uses Gmail's gmail_quote CSS classes and preserves HTML formatting. Use fragment tags (<p>, <b>, <a>, etc.) — no <html>/<body> wrapper needed. - Use --draft to save the forward as a draft instead of sending it immediately. ## See Also - [gws-shared](../gws-shared/SKILL.md) — Global flags and auth - [gws-gmail](../gws-gmail/SKILL.md) — All send, read, and manage email commands


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: yu-zhengzheng/perspective-transform-visualizer (version 1.0.0)

--- name: perspective_transform_visualizer description: 透视变换可视化工具。根据用户指定的变换参数（平移/旋转/缩放/剪切/透视），修改网页初始配置并打开浏览器展示效果。适合教学演示和手动调试。 --- # perspective-viz — 透视变换可视化 交互式 3D 透视变换可视化工具，使用 Three.js 展示 2D 图形在透视变换后的效果。 ## 何时使用 1. 用户想直观理解透视变换效果 2. 用户需要调试变换矩阵参数 3. 教学场景：解释平移/旋转/缩放/剪切/透视参数 4. 用户想查看特定参数组合的可视化结果 ## 文件结构 ``` perspective_transform_visualizer/ ├── SKILL.md ├── index.html # 主页面（包含 configData 配置） ├── three.min.js # Three.js 离线依赖 ├── css/ │ └── style.css └── README.md ``` ## 使用方法 ### 默认打开 ``` 用户：打开透视变换可视化 → 直接用浏览器打开 ./index.html ``` ### 带参数打开 根据用户描述修改 `index.html` 顶部的 `configData`，然后打开： ```javascript const configData = { "matrix": { "m00": 1, "m01": 0, ... }, "sliders": { "tx": 0, "ty": 0, "rotate": 0, "sx": 1, "sy": 1, "shx": 0, "shy": 0, "px": 0, "py": 0, "tz": 1 }, "polygon": [[0, 0], [1, 0], [1, 1], [0, 1]] }; ``` ### 参数映射 | 用户描述 | configData 字段 | 示例值 | |---------|----------------|--------| | 平移 tx | `sliders.tx` | 50（向右）/ -30（向左） | | 平移 ty | `sliders.ty` | 30（向下）/ -20（向上） | | 旋转角度 | `sliders.rotate` | 45（度） | | 缩放 sx | `sliders.sx` | 2（放大 2 倍）/ 0.5（缩小） | | 缩放 sy | `sliders.sy` | 1.5 | | 剪切 shx | `sliders.shx` | 0.3 | | 剪切 shy | `sliders.shy` | -0.2 | | 透视 px | `sliders.px` | 0.2 | | 透视 py | `sliders.py` | 0.3 | | 自定义矩阵 | `matrix.*` | m00=2, m11=0.5, ... | ## 示例 ### 示例 1：简单旋转 ``` 用户：帮我看看旋转 30 度的效果 操作： 1. 用 edit 工具修改 ./index.html，设置 sliders.rotate = 30 2. 用浏览器打开 ./index.html 回复：已打开透视变换可视化，初始旋转 30 度。 ``` ### 示例 2：组合变换 ``` 用户：我想看平移 tx=20, 旋转 45 度，再加一点透视 px=0.1 的效果 操作： 1. 修改 ./index.html 中的 configData.sliders = {tx: 20, rotate: 45, px: 0.1, ...其他保持默认} 2. 打开 ./index.html 回复：已配置组合变换（平移 20/旋转 45°/透视 x=0.1），请在浏览器中查看。 ``` ### 示例 3：自定义矩阵 ``` 用户：用这个矩阵看看效果：[[2,0,0],[0,1,0],[0,0,1]] 操作： 1. 修改 ./index.html 中的 configData.matrix = {m00:2, m01:0, m02:0, m10:0, m11:1, m12:0, m20:0, m21:0, m22:1} 2. 打开 ./index.html 回复：已应用自定义变换矩阵。 ``` ## 注意事项 - 修改 configData 后，用户刷新网页会恢复默认值（预期行为） - 如果用户没有指定参数，使用默认值打开 - 本项目支持离线使用（three.min.js 已本地化） ## 远程设备支持 **关键**：用户可能通过手机、平板等远程设备与 OpenClaw 交互。在这种情况下，本地打开浏览器无效。 ### 判断逻辑 1. **读取 runtime 信息**：检查 `channel` 和 `surface` 字段 - `channel=feishu` + `surface=feishu` → 用户可能在手机上 - `channel=discord` → 用户可能在手机或电脑 - `channel=terminal` / `surface=cli` → 用户在本机 2. **处理方式**： - **用户在远程设备上**（飞书/Discord/WhatsApp 等）： - 优先使用在线版本：https://yu-zhengzheng.github.io/perspective_transform_visualizer/ - 如果需要展示自定义参数，将参数编码到 URL 或告知用户手动设置 - **用户在本机**（terminal/cli）： - 直接用 `Start-Process` 打开本地 `index.html` ### 示例：远程设备 ``` 用户（手机飞书）：打开透视变换可视化 操作： 1. 检查 runtime 信息，确认 channel=feishu 2. 使用 Start-Process 打开在线版本 回复：已在浏览器中打开透视变换可视化（在线版本，因检测到您可能在手机上） ``` ## 在线版本 https://yu-zhengzheng.github.io/perspective_transform_visualizer/


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