OpenClaw/clawhub-security-signals huggingface dataset:
Skill: iisweetheartii/opencode-omo (version 0.3.0)

--- name: opencode-omo version: 0.3.0 description: Turn coding requests into completed work. Plan with Prometheus, execute with Atlas, and iterate with Sisyphus in OpenCode. homepage: https://github.com/IISweetHeartII/opencode-omo metadata: openclaw: emoji: "🧱" category: devtools requires: bins: - opencode - git - clawhub tags: - opencode - oh-my-opencode - sisyphus - coding - workflow --- # OpenCode + Oh-My-OpenCode Operator This skill is an operating guide for using **OpenCode** as your coding runtime, with **Oh-My-OpenCode** orchestration through Sisyphus, Prometheus, and Atlas. ## What this skill gives you - One-shot delivery with `ulw` for focused coding requests. - Plan-to-execution workflow via `@plan` and `/start-work`. - Repeatable defaults so code quality stays consistent across runs. ## Core rules - Do not edit code directly outside OpenCode unless explicitly asked. - Prefer Sisyphus-first execution for coding tasks. - For complex work: plan with Prometheus (`@plan`) then execute with Atlas (`/start-work`). ## Quick start ### Verify Oh-My-OpenCode plugin ```bash cat ~/.config/opencode/opencode.json | grep "oh-my-opencode" ``` If the command returns output, the plugin is installed. You can also run the bundled checker: ```bash ./scripts/check-omo.sh ``` ### Run one-shot coding (Sisyphus + ultrawork) ```bash opencode run --agent sisyphus "ulw implement JWT auth in this service and add tests" ``` Or use the bundled helper: ```bash ./scripts/run-ulw.sh "implement JWT auth in this service and add tests" ``` ### Start interactive OpenCode (Sisyphus) ```bash opencode --agent sisyphus ``` Inside OpenCode: - Use `@plan "..."` to invoke Prometheus planning. - Use `/start-work` to let Atlas execute the plan. ## Failure handling - If the agent asks clarifying questions mid-implementation, answer them in plan mode (Prometheus) and re-run execution. - If you need more determinism, re-run with `ulw` and a smaller, explicit request. ## Integration with other skills - **[agent-selfie](https://clawhub.org/skills/agent-selfie)**: pair structured coding workflows with generated visual assets. - **[gemini-image-gen](https://clawhub.org/skills/gemini-image-gen)**: use the same workflow discipline for image generation automations. - **[agentgram](https://clawhub.org/skills/agentgram)**: publish progress updates, findings, and demos produced from your workflow runs. ## Changelog - v0.3.0: Added bidirectional ecosystem links and bundled workflow helper scripts. - v0.2.0: Reworked positioning, quick start, and metadata for clearer marketplace onboarding. - v0.1.0: Initial release with Sisyphus/Prometheus/Atlas workflow guidance.


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: loutai0307-prog/bytesagain-workflow-builder (version 1.0.3)

--- description: "Create and run multi-step shell workflows with status tracking. Use when automating deployment sequences, chaining build steps, running CI pipelines locally, or tracking multi-stage task execution." author: BytesAgain homepage: https://bytesagain.com source: https://github.com/bytesagain/ai-skills --- # bytesagain-workflow-builder Build, run, and track multi-step workflows from the terminal. Define pipeline steps with shell commands, execute them in sequence, and monitor status with detailed progress tracking. ## Usage ``` bytesagain-workflow-builder create "<name>" bytesagain-workflow-builder add-step <id> "<step_name>" "<command>" bytesagain-workflow-builder run <id> bytesagain-workflow-builder status <id> bytesagain-workflow-builder list bytesagain-workflow-builder export <id> bytesagain-workflow-builder template <type> ``` ## Commands - `create` — Create a new named workflow and get its ID - `add-step` — Add a shell command step to a workflow - `run` — Execute all steps in sequence, stopping on failure - `status` — Show per-step execution status and output - `list` — List all workflows with step counts and last run time - `export` — Export workflow definition as JSON - `template` — Show starter templates (ci, deploy) ## Examples ```bash bytesagain-workflow-builder create "Release Pipeline" bytesagain-workflow-builder add-step wf001 "Run Tests" "npm test" bytesagain-workflow-builder add-step wf001 "Build" "npm run build" bytesagain-workflow-builder add-step wf001 "Deploy" "rsync -av dist/ server:/var/www/" bytesagain-workflow-builder run wf001 bytesagain-workflow-builder status wf001 ``` ## Requirements - bash - python3 ## When to Use Use when automating multi-step processes, building CI-like pipelines locally, tracking deployment steps, or managing repeatable task sequences with clear pass/fail status.


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (MEDIUM)
Skill: numbpill3d/system-vigil (version 1.0.0)

--- name: system-vigil description: Monitor host system health (Disk, RAM, CPU). Returns structured JSON status for predictive maintenance. metadata: openclaw: emoji: "🛡️" requires: bins: - df - free - uptime --- # System Vigil A health monitor for the host machine. It checks vital signs and returns a structured report, allowing agents to detect resource exhaustion before it causes a crash. ## Capabilities - **Check Health:** Get a JSON report of Disk, Memory, and CPU usage. - **Predictive Status:** Returns specific flags (`warning`, `critical`) based on thresholds. ## Usage **User:** "Run a system health check." **Agent:** `python3 skills/system-vigil/check.py` **Output:** ```json { "status": "ok", "disk": { "used_percent": 45, "free_gb": 120 }, "memory": { "used_percent": 30, "free_gb": 12 }, "cpu": { "load_15m": 0.5 } } ``` ## Implementation A Python script parsing standard Linux utils (`df`, `free`, `uptime`).

path: check.py
content: import subprocess
import json
import re

def get_disk_usage():
    try:
        # Check root partition
        out = subprocess.check_output(['df', '-h', '/']).decode('utf-8')
        # Extract percentage
        match = re.search(r'(\d+)%', out)
        if match:
            return int(match.group(1))
    except:
        return None
    return None

def get_memory_usage():
    try:
        out = subprocess.check_output(['free', '-m']).decode('utf-8')
        lines = out.split('\n')
        mem_line = [l for l in lines if l.startswith('Mem:')][0]
        parts = mem_line.split()
        total = int(parts[1])
        used = int(parts[2])
        return round((used / total) * 100, 1)
    except:
        return None

def get_load_avg():
    try:
        with open('/proc/loadavg', 'r') as f:
            content = f.read()
            return float(content.split()[2]) # 15-min load
    except:
        return None

def check():
    disk = get_disk_usage()
    mem = get_memory_usage()
    load = get_load_avg()

    status = "ok"
    warnings = []

    if disk and disk > 85:
        status = "warning"
        warnings.append(f"Disk usage high ({disk}%)")
    if disk and disk > 95:
        status = "critical"
        
    if mem and mem > 90:
        status = "warning"
        warnings.append(f"Memory usage high ({mem}%)")
    
    report = {
        "status": status,
        "metrics": {
            "disk_used_percent": disk,
            "memory_used_percent": mem,
            "load_avg_15m": load
        },
        "warnings": warnings
    }
    
    print(json.dumps(report, indent=2))

if __name__ == "__main__":
    check()


path: package.json
content: {
  "name": "system-vigil",
  "version": "1.0.0",
  "description": "predictive host system health monitoring",
  "main": "check.py",
  "scripts": {
    "start": "python3 check.py"
  },
  "author": "xethis",
  "license": "MIT"
}

Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: codenova58/thepaper (version 0.1.0)

--- name: thepaper-hot-trend description: 注册“澎湃新闻”热门技能；当需要访问或自动化澎湃新闻相关内容时调用。 homepage: `https://www.thepaper.cn/` metadata: {"clawdbot":{"emoji":"🔥"}} --- # 澎湃新闻 用途与边界 - 面向公开新闻页与频道页的检索与内容摘要 - 不提供接口逆向或批量抓取能力 - 仅用于公开页面的轻量分析与提醒 关键入口 - 主页：https://www.thepaper.cn/ - 要闻/时政/财经频道：频道入口 - 搜索入口：站内搜索 常见任务 - 指定关键词的新闻集合摘要（标题、来源、发布时间、互动指标） - 频道页的热点条目与题材分布统计 - 深度报道的段落摘要与要点提取 数据字段 - 标题、来源、作者（若标注）、发布时间、正文摘要、标签、链接 - 互动指标（评论数/点赞数，如公开展示） - 频道名称、采集时间、来源链接 自动化要点 - 动态渲染，需等待页面加载完成后解析 - 频率控制，不进行批量抓取；结果标注采集时间 - 对长文执行段落摘要，避免过度采集 示例流程 - 关键词摘要：输入关键词 → 搜索 → 抽取条目 → 输出摘要清单 - 频道统计：访问频道页 → 抽取热点 → 题材分布与来源统计 - 长文要点：访问文章页 → 抽取小标题与段落 → 输出要点列表 合规提示 - 遵守平台规则，不进行接口调用或批量采集 - 结果仅用于内部分析与提醒


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: spinzerus/gmail-bridge (version 1.0.0)

--- name: gmail-bridge description: Google Workspace Bridge (Gmail, Drive, Sheets, Calendar) via local API at http://127.0.0.1:8787 homepage: local metadata: {"clawdbot":{"emoji":"📧","requires":{"bins":["curl","jq"]}}} --- # gmail-bridge Use this skill whenever the user asks about: - latest emails / unread emails / email search - reading a specific email - searching Google Drive files - reading/writing Google Sheets ranges - checking calendar events or creating events ## IMPORTANT BEHAVIOR RULES (for a good assistant experience) - Do NOT return Gmail message IDs alone unless the user explicitly asks. - For “check my latest email(s)”, return a short list of the latest 5–10 items with: **Subject, From, Date, Snippet** - If the user asks “open email #3” or similar, call `get` on that message ID and summarize. - For Sheets/Drive/Calendar, always show a concise summary and ask a follow-up only when an ID/range/time window is missing. ## How to use ### Gmail 1) Latest emails (returns summaries): - `bash run.sh recent 10` 2) Unread emails: - `bash run.sh unread 10` 3) Search emails (Gmail query syntax): - `bash run.sh search "from:amazon subject:invoice" 10` 4) Forward an email to a specific address: - `bash run.sh forward <messageId> <emailAddress>` - For example: `bash run.sh forward 19c647bc33f89bdd [REDACTED_SECRET]` 5) Email details: - `bash run.sh get <messageId> metadata` - formats: `metadata` (default), `full`, `raw` ### Gmail 1) Latest emails (returns summaries): - `bash run.sh recent 10` 2) Unread emails: - `bash run.sh unread 10` 3) Search emails (Gmail query syntax): - `bash run.sh search "from:amazon subject:invoice" 10` 4) Email details: - `bash run.sh get <messageId> metadata` - formats: `metadata` (default), `full`, `raw` ### Drive 1) Search files (Drive query language): - `bash run.sh drive-search "name contains 'FutureReady'" 10` 2) Get file metadata: - `bash run.sh drive-file <fileId>` ### Sheets 1) Read a range: - `bash run.sh sheets-get <spreadsheetId> "Sheet1!A1:D20"` 2) Write values: - `bash run.sh sheets-set <spreadsheetId> "Sheet1!A1:B2" '[[\"A1\",\"B1\"],[\"A2\",\"B2\"]]'` ### Calendar 1) List events: - `bash run.sh cal-events 10 2026-02-01T00:00:00Z 2026-03-01T00:00:00Z primary` 2) Create an event: - `bash run.sh cal-create "Workshop" 2026-02-20T02:00:00Z 2026-02-20T03:00:00Z primary "Bangi" "Prep session"` ## Auth / Security - This skill calls a local bridge on 127.0.0.1. If the bridge enforces a secret header, set: `export BRIDGE_SECRET="..."` before running commands. - The bridge uses OAuth tokens stored on the server.


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: make453/new-akshare-stock-bak (version 1.0.0)

--- name: akshare-stock description: A股量化数据分析工具，基于AkShare库获取A股行情、财务数据、板块信息等。用于回答关于A股股票查询、行情数据、财务分析、选股等问题。 --- # A股量化 - AkShare 数据接口 ## 快速开始 安装依赖： ```bash pip install akshare ``` ## 支持的功能 ### 1. 实时行情查询 ```python import akshare as ak # 个股实时行情 stock_zh_a_spot_em() stock_zh_a_spot_em(symbol="北证A股") ``` ### 2. 历史K线数据 ```python import akshare as ak # 日K线 stock_zh_a_hist(symbol="000001", period="daily", start_date="20240101", end_date="20241231", adjust="qfq") # 周K线 stock_zh_a_hist(symbol="000001", period="weekly", start_date="20240101", end_date="20241231", adjust="qfq") # 月K线 stock_zh_a_hist(symbol="000001", period="monthly", start_date="20240101", end_date="20241231", adjust="qfq") ``` ### 3. 财务数据 ```python import akshare as ak # 财务报表 stock_financial_abstract_ths(symbol="000001", indicator="按报告期") # 主要财务指标 stock_financial_analysis_indicator(symbol="000001") ``` ### 4. 板块/行业分析 ```python import akshare as ak # 行业板块行情 stock_board_industry_name_em() # 概念板块行情 stock_board_concept_name_em() # 板块内个股 stock_board_industry_cons_em(symbol="半导体") ``` ### 5. 资金流向 ```python import akshare as ak # 个股资金流向 stock_individual_fund_flow(stock="000001", market="sh") # 大单净流入 stock_individual_fund_flow(stock="000001", market="sh", symbol="大单净流入") ``` ### 6. 龙虎榜 ```python import akshare as ak # 每日龙虎榜 stock_lhb_detail_em(date="20240930") # 机构调研 stock_zlzj_em() ``` ### 7. 新股/IPO ```python import akshare as ak # 新股申购 stock_new_ipo_em() # 待上市新股 stock_new_ipo_start_em() ``` ### 8. 融资融券 ```python import akshare as ak # 融资融券 stock_margin_sse(symbol="600000") # 融资融券明细 stock_rzrq_detail_em(symbol="600000", date="20240930") ``` ## 常用股票代码 - **平安银行**: 000001 - **贵州茅台**: 600519 - **宁德时代**: 300750 - **比亚迪**: 002594 - **招商银行**: 600036 ## 备选方案: Baostock 如果 AkShare 安装失败，可使用 baostock（更轻量）: ```python import baostock as bs # 登录 lg = bs.login() print(lg.error_msg) # 获取历史K线 rs = bs.query_history_k_data_plus('sh.600519', 'date,code,open,high,low,close,volume', start_date='20250101', end_date='20251231') data_list = [] while rs.next: data_list.append(rs.get_row_data()) bs.logout() ``` ## 注意事项 1. 数据仅供学术研究，不构成投资建议 2. 接口可能因目标网站变动而失效 3. 建议添加异常处理和重试机制 4. **当前环境网络问题可能导致测试失败，请在本地环境测试**


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: sxliuyu/package-version-tracker (version 1.0.1)

# Package Version Tracker > 快速查询 npm/pypi 包版本信息，追踪最新版本和历史版本。 ## 功能 - **npm 包版本查询**：查询 npm 包的最新版本、发布时间、所有版本列表 - **pypi 包版本查询**：查询 PyPI 包的最新版本、发布历史 - **版本比较**：比较两个版本号大小 - **多包批量查询**：一次查询多个包 ## 触发词 - "查一下 npm 包版本" - "pypi 版本" - "package version" - "包版本查询" - "npm latest" - "pip show" ## 使用方法 ### 命令格式 ``` /version npm <package_name> /version pypi <package_name> /version compare <version1> <version2> ``` ### 示例 ``` /version npm react /version pypi pandas /version compare 2.0.0 1.9.0 ``` ## 输出格式 返回包的详细信息： - 包名 - 最新版本 - 发布日期 - 版本数量 - 依赖信息 - 历史版本列表（最近5个） ## 限制 - 无需 API key，直接使用公共 registry API - 速率限制：每秒最多 5 次请求 - 批量查询最多 10 个包


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (MEDIUM)
Skill: wangssi1998-cell/memory-structure (version 1.0.4)

--- name: memory-structure version: 1.0.2 description: Enable AI to learn from mistakes and never repeat them. Error tracking, layered memory, regular self-reflection, continuous improvement. --- # Skill: memory-structure ## Name memory-structure ## Function Copy existing memory structure to new environments, enabling other Agents to use the same memory system. ## Use Cases - Quickly set up self-improvement framework for new Agents - Unify memory organization across multiple Agents - Establish standardized self-reflection process ## Skill Contents This skill includes: | File | Description | |------|-------------| | `memory.md` | Main memory file: preferences, patterns, rules (HOT tier) | | `corrections.md` | Error correction log: "what I got wrong" and correct answers | | `index.md` | Memory index: tracks all memory file updates | | `heartbeat-state.md` | Heartbeat state: records self-reflection check timestamps and results | | `heartbeat-rules.md` | Heartbeat rules: defines triggers and execution logic for self-reflection | | `setup.md` | Setup guide: installation and configuration instructions | ## Usage ### 1. Install Skill Using ClawHub: ```bash clawhub install memory-structure ``` ### 2. Initialize Memory Structure Create memory directory in target workspace: ```bash mkdir -p ~/self-improving/{domains,projects,archive} ``` Then manually create the following files (copy template contents below): ### 3. Regular Self-Reflection After completing important tasks, Agent should update heartbeat-state.md with reflection results. ## Core Concepts - **HOT Tier**: Memory files are hot-tier, high-frequency access - **Corrections Log**: Errors are the source of improvement, must be recorded - **Heartbeat**: Regular self-reflection to check if memory structure needs updates ## Dependencies - No external dependencies - Requires file system write permission - Heartbeat interval configured in OpenClaw config (default: 30 minutes)


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: tankebuaa/web-browsing (version 1.0.0)

--- name: web-browsing description: Browse and summarize websites, extract content from URLs, search the web for information. Use when user asks to visit a website, get webpage content, search online, or find current information that requires browsing the internet. --- # Web Browsing Skill This skill enables browsing websites, extracting content from URLs, and searching the web for information. ## When to Use **Use this skill when:** - User asks you to visit a website (e.g., "Check out example.com") - User wants webpage content summarized - User needs current information that requires internet search - User provides a URL and wants it analyzed - User asks to search for something online ## How It Works ### 1. Direct URL Access When given a specific URL: ```markdown User: "What's on https://example.com?" → Visit the page, extract main content, summarize key points ``` ### 2. Web Search When user asks to search: ```markdown User: "Find information about climate change" → Perform web search, present top results with summaries ``` ### 3. Content Extraction For specific data extraction: ```markdown User: "Get the latest news from techcrunch.com" → Navigate to site, extract relevant articles/headlines ``` ## Tools Available - **web_search**: Search the web for information - **fetch_url**: Visit and retrieve webpage content - **extract_content**: Parse HTML and extract structured data ## Best Practices 1. **Be specific** - Tell me what you want from the page (summary, specific data, latest news) 2. **Provide URLs** - If you have a specific page, share the URL directly 3. **Clarify intent** - Let me know if you need: - Quick summary - Detailed analysis - Specific data points - Latest updates ## Examples ```markdown ✅ "Visit https://news.ycombinator.com and summarize today's top stories" ✅ "Search for the latest React.js tutorial" ✅ "Check what's on Wikipedia's page about quantum computing" ✅ "Find pricing information from apple.com/iphone" ❌ Just say "browse the web" - be more specific! ``` ## Limitations - Cannot interact with JavaScript-heavy sites (may miss dynamic content) - Some sites block automated access - Video/audio content cannot be played, only described if available - Login-required pages won't work without credentials --- **Ready to browse!** Just give me a URL or tell me what to search for. 🌐


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (MEDIUM)
Skill: novb1492/korean-apartment-real-estate-transaction-analytics (version 1.1.13)

모든집-아파트실거래가를 한눈에! 사이트에 있는 기능을 일부 오픈클로에서 쓸수 있는 플러그인입니다 이플러그인은 단순히 그냥 실거래 정보를 제공한는게 아닌 대한민국 서울/경기등 다양한 지역과 아파트의 실거래 데이터를 국토교통부 api에서 가져와 다양항 테마로(층별,면적별,최고가,평균값등) 분석을 제공하는 패키지입니다 자세한 사항은 npm 사이트를 확인하세요 https://www.npmjs.com/package/@brokimyeah/openclaw-eho This package does not simply provide raw real estate transaction data. It delivers analyzed insights based on apartment transaction data across various regions in South Korea, including Seoul and Gyeonggi, sourced from the Ministry of Land, Infrastructure and Transport (MOLIT) API. The data is processed and presented through multiple perspectives such as floor level, unit size, highest price, average value, and more. download files and openclaw plugins install "folderlocation" or download openclaw plugins install @brokimyeah/openclaw-eho check c\user\.openclaw\extensions\openclaw-eho If the folder exists, the plugin is installed successfully. and just ask require sido value and period and typeDetail ex)서울시(sido) 매매(typeDetail) 최근3개월(period)조회해줘 If OpenClaw cannot find the eho plugin, please try saying: "Please use the installed plugin 'eho'." While it does not include all features of the original website, it provides core functionality for analyzing real estate transactions by region and apartment. check more here https://www.npmjs.com/package/@brokimyeah/openclaw-eho


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (MEDIUM)
Skill: alukardo/tiny-scraper (version 1.0.2)

--- name: TinyScraper description: 简单静态网站镜像爬虫。给定 URL 下载整个域名下的 HTML、JS、CSS 和静态资源到本地，支持离线浏览。 --- # TinyScraper - 静态网站镜像工具 > 纯 Python3 标准库，无额外依赖 ## 📁 目录结构 ``` TinyScraper/ ├── SKILL.md ├── bin/ │ └── tinyscraper # CLI 入口 ├── lib/ │ └── crawler.py # 核心爬虫逻辑 ├── conf/ │ └── .tinyscraper.conf # 配置文件 ├── assets/ ├── scripts/ │ └── test_crawler.py # 自动化测试 └── references/ └── SPEC.md # 格式标准文档 ``` ## 🎯 Skill 职责 将目标网站完整镜像到本地，包括： - HTML 页面（保持目录结构） - JS、CSS、图片、字体等静态资源 - HTML/CSS 中的相对路径自动重写 - 外部链接保留原值，不处理 ## 🔖 触发场景 - 用户要求"下载网站"、"镜像网站"、"离线保存网页" - 用户提供 URL 并要求"爬取整个网站" - 用户要求"抓取网站所有资源" ## 📋 执行步骤 ### 1. 确认目标 - 检查 URL 是否为简单静态网站（SPA / JS 驱动类网站不适合） - 使用 `--dry-run` 预览爬取范围 ### 2. 启动爬取 ```bash tinyscraper "https://example.com" ``` ### 3. 监控进度 - 实时显示：已爬页面数、资源数、待爬队列长度 - 失败 URL 记录到日志 ### 4. 完成后 - 镜像保存于：`tmp/mirrors/{domain}/` - 可用浏览器直接打开 `index.html` 离线浏览 ## ⚙️ 命令详解 ```bash # 完整镜像 tinyscraper "https://example.com" # 预览模式（只列出 URL，不下载） tinyscraper "https://example.com" --dry-run # 清理已下载的镜像 tinyscraper -d example.com # 显示帮助 tinyscraper -h ``` ## 📦 输出标准 ### 目录结构 ``` tmp/mirrors/{domain}/ ├── index.html ├── page/ │ └── index.html ├── assets/ │ ├── style.css │ └── script.js ├── images/ │ └── logo.png ``` ### 路径规范 | URL | 本地路径 | |-----|---------| | `/` | `index.html` | | `/about` | `about/index.html` | | `/page?id=1` | `page/index.html` | | `/style.css?v=1.2` | `style.css`（去重） | | `/page#section` | `#` 锚点去除，视为同一文件 | ### 资源重写规则 - HTML 内所有同域 `href`/`src` → 相对路径 - CSS 内所有 `url()` → 相对路径 - 外部链接（其他域名）→ 保留原值不变 - `mailto:`/`tel:`/`javascript:` → 保留原值不处理 ### 日志输出 ``` [STEP] 🌐 开始镜像: https://example.com [STEP] 📁 保存目录: tmp/mirrors/example.com [INFO] 保存页面: https://example.com -> .../index.html [INFO] 保存资源: https://example.com/style.css -> .../style.css [STEP] 爬取 (1): https://example.com/about [INFO] 进度: 已爬 3 页面, 12 资源, 5 待爬 ... [INFO] ================================================== [INFO] 镜像完成! [INFO] 页面: 15 [INFO] 资源: 48 [INFO] 失败: 2 [INFO] 目录: tmp/mirrors/example.com ``` ## ⚠️ 局限性 - 仅支持简单静态网站（SPA/React/Vue 等 JS 驱动类不适用） - 外部域名资源（如 CDN 上的 JS）不会下载 - 需目标网站允许爬取（robots.txt 规则被忽略）


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