OpenClaw/clawhub-security-signals huggingface dataset:
Skill: googleworkspace-bot/gws-script (version 1.0.2)

--- name: gws-script description: "Manage Google Apps Script projects." metadata: version: 0.22.5 openclaw: category: "productivity" requires: bins: - gws cliHelp: "gws script --help" --- # script (v1) > **PREREQUISITE:** Read `../gws-shared/SKILL.md` for auth, global flags, and security rules. If missing, run `gws generate-skills` to create it. ```bash gws script <resource> <method> [flags] ``` ## Helper Commands | Command | Description | |---------|-------------| | [`+push`](../gws-script-push/SKILL.md) | Upload local files to an Apps Script project | ## API Resources ### processes - `list` — List information about processes made by or on behalf of a user, such as process type and current status. - `listScriptProcesses` — List information about a script's executed processes, such as process type and current status. ### projects - `create` — Creates a new, empty script project with no script files and a base manifest file. - `get` — Gets a script project's metadata. - `getContent` — Gets the content of the script project, including the code source and metadata for each script file. - `getMetrics` — Get metrics data for scripts, such as number of executions and active users. - `updateContent` — Updates the content of the specified script project. This content is stored as the HEAD version, and is used when the script is executed as a trigger, in the script editor, in add-on preview mode, or as a web app or Apps Script API in development mode. This clears all the existing files in the project. - `deployments` — Operations on the 'deployments' resource - `versions` — Operations on the 'versions' resource ### scripts - `run` — ## Discovering Commands Before calling any API method, inspect it: ```bash # Browse resources and methods gws script --help # Inspect a method's required params, types, and defaults gws schema script.<resource>.<method> ``` Use `gws schema` output to build your `--params` and `--json` flags.


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: johnnywang2001/whois-toolkit (version 1.0.0)

--- name: whois-toolkit description: Domain WHOIS lookup toolkit for querying registrar, creation/expiry dates, nameservers, status, and registrant info. Use when looking up domain ownership, checking domain expiry dates, monitoring domain renewals, or investigating domain registration details. Supports all major TLDs. No external dependencies or API keys required. --- # WHOIS Toolkit Query WHOIS data for any domain — registrar, dates, nameservers, expiry warnings. ## Quick Start ```bash # Basic WHOIS lookup python3 scripts/whois_lookup.py example.com # Multiple domains at once python3 scripts/whois_lookup.py example.com example.org example.io # JSON output python3 scripts/whois_lookup.py example.com --json # Expiry check only (great for monitoring) python3 scripts/whois_lookup.py example.com example.org --expiry-only # Show raw WHOIS response python3 scripts/whois_lookup.py example.com --raw # Use a specific WHOIS server python3 scripts/whois_lookup.py example.com --server whois.verisign-grs.com ``` ## Features - Structured parsing: registrar, dates, nameservers, status, organization - Expiry warnings: color-coded alerts at 30, 90 day thresholds - Multi-domain batch queries - Raw WHOIS passthrough mode - Built-in WHOIS server mapping for 25+ TLDs - Zero dependencies (uses raw socket queries) ## Flags - `--json` — Machine-readable JSON output - `--raw` — Include raw WHOIS response text - `--expiry-only` — Show only domain and expiry date - `--server <host>` — Override the WHOIS server


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: wuchubuzai2018/image-resizer (version 0.1.1)

--- name: image-resizer description: 图片尺寸调整和压缩工具技能。用于按指定像素宽高、比例或最大尺寸限制调整图片大小，并支持智能压缩到指定文件大小。适用于需要批量处理图片、生成特定尺寸缩略图、压缩图片以满足文件大小限制等场景。 --- ## 技能概述 **技能名称：** image-resizer **核心功能：** 图片尺寸调整和压缩，支持按像素宽高、比例、最大尺寸进行调整，以及智能压缩到指定文件大小 **适用场景：** - 按指定像素尺寸调整图片（如 800×600） - 按比例缩放图片（如 50% 缩小、200% 放大） - 限制最大尺寸（保持比例，如最大 1920×1080） - 指定宽高比裁剪（如 16:9、4:3） - 压缩图片到指定大小（如压缩到 ≤500KB） - 批量处理多张图片 ## 脚本使用说明 ### 安装依赖 ```bash cd scripts npm install ``` ### 基本用法 ```bash node resize_image.js <输入图片> [选项] ``` ### 选项说明 | 参数 | 简写 | 说明 | 示例 | |------|------|------|------| | `--width` | `-w` | 目标宽度（像素） | `-w 800` | | `--height` | `-h` | 目标高度（像素） | `-h 600` | | `--scale` | `-s` | 缩放比例 | `-s 0.5` | | `--max-width` | - | 最大宽度（保持比例） | `--max-width 1920` | | `--max-height` | - | 最大高度（保持比例） | `--max-height 1080` | | `--quality` | `-q` | 输出质量 1-100 | `-q 80` | | `--size` | `-S` | 目标文件大小（KB），自动压缩 | `-S 500` | | `--format` | `-f` | 输出格式：png\|jpg\|webp\|original | `-f webp` | | `--output` | `-o` | 输出路径 | `-o output.png` | | `--aspect-ratio` | `-a` | 目标宽高比 | `-a 16:9` | | `--fit` | - | 适应模式 | `--fit cover` | ### 适应模式说明 | 模式 | 说明 | |------|------| | `cover` | 填充整个区域（可能裁剪，默认） | | `contain` | 完整放入区域内（可能留白） | | `fill` | 拉伸填充 | | `inside` | 完整放入（仅缩小） | | `outside` | 完全覆盖（仅放大） | ## 使用示例 ### 示例 1：按指定尺寸调整 ```bash node resize_image.js input.png -w 800 -h 600 -o output.png ``` ### 示例 2：按比例缩放 ```bash node resize_image.js input.png -s 0.5 -o output.png ``` ### 示例 3：压缩到指定大小 ```bash node resize_image.js input.png -S 500 -o output.jpg ``` ### 示例 4：指定宽高比裁剪 ```bash node resize_image.js input.png -a 16:9 -o output.png ``` ### 示例 5：最大尺寸限制（保持比例） ```bash node resize_image.png input.png --max-width 1920 --max-height 1080 -o output.png ``` ### 示例 6：转换为 WebP 并压缩 ```bash node resize_image.js input.png -f webp -q 80 -o output.webp ``` ## 典型工作流程 ### 流程 1：生成网站缩略图 1. 读取原始图片 2. 限制最大宽度为 1200px，保持比例 3. 压缩到 ≤300KB 4. 输出为 JPEG 格式 ```bash node resize_image.js photo.jpg --max-width 1200 -S 300 -f jpg -o thumbnail.jpg ``` ### 流程 2：生成社交媒体图片 1. 读取原始图片 2. 调整为 1080×1080 正方形 3. 压缩到 ≤500KB ```bash node resize_image.js input.png -w 1080 -h 1080 -S 500 -o instagram.png ``` ### 流程 3：生成 16:9 横版图片 1. 读取原始图片 2. 按 16:9 比例裁剪（居中） 3. 压缩到 ≤200KB ```bash node resize_image.js input.png -a 16:9 -S 200 -o 16_9.jpg ``` ## 技能文件结构 ``` image-resizer/ ├── SKILL.md # 技能主文件 └── scripts/ ├── resize_image.js # 图片处理脚本 └── package.json # 依赖配置 ``` ## 依赖说明 - **sharp**: 图片处理库，支持 PNG、JPEG、WebP 等格式的转换、裁剪和压缩


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: sea2049/vector-memory-windows (version 1.0.1)

--- name: vector-memory-windows description: Full memory stack for OpenClaw on Windows. Includes LanceDB semantic memory, git-notes decision memory, and memory hygiene workflow. --- # Vector Memory (Windows) Complete memory engineering bundle for OpenClaw. ## Included Modules - `bundle/lancedb-memory`: semantic storage and retrieval backend - `bundle/git-notes-memory`: branch-aware git-notes long-term memory - `bundle/memory-hygiene`: cleanup and maintenance playbook ## Why use this bundle - Works on Windows out of the box. - Keeps compatibility with existing memory APIs. - Provides both retrieval and governance, not only storage. ## Quick Start 1. Install LanceDB dependencies: ```bash pip install -r bundle/lancedb-memory/requirements.txt ``` 2. For semantic memory backend, import from: - `bundle/lancedb-memory/final_memory.py` - `bundle/lancedb-memory/clawdbot_memory.py` 3. For branch-aware memory: ```bash python bundle/git-notes-memory/memory.py -p . sync --start ``` 4. Apply hygiene recommendations from: - `bundle/memory-hygiene/SKILL.md` ## Storage Defaults - Windows: `D:\clawtest\memory\lancedb` - Unix-like: `~/.clawdbot/memory/lancedb` You can override with: - `OPENCLAW_LANCEDB_PATH` - `CLAWTEST_ROOT` (Windows)


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (CRITICAL)
Skill: kklldog/e2e-test-orchestrator (version 1.0.0)

--- name: e2e-test-orchestrator description: 端到端（E2E）测试编排与执行。用于用户要求：设计测试用例、基于 Playwright/Cypress 实现自动化脚本、通过源码优先定位元素并在必要时使用截图/图像识别兜底、执行测试、自动修复脚本问题（如定位器或等待策略）、并输出结构化测试报告。 --- # E2E 测试编排器 严格按以下顺序执行：**测试规划 → 脚本实现 → 执行测试 → 归因/修复 → 结果报告**。 ## 1）先做测试规划 1. 阅读需求说明、验收标准、目标环境信息。 2. 使用 `references/case-template.md` 产出分级测试用例： - P0：核心主流程（如登录、支付、鉴权、数据一致性） - P1：关键分支与校验流程 - P2：边界、异常与韧性场景 3. 每条用例必须明确： - 前置条件 / 测试数据 - 操作步骤 - 期望结果 - 断言点与证据采集点 若需求不清晰，先写明假设，再进入脚本实现。 ## Playwright 关键要求（先读） 1. 在开始实现前，先阅读 `references/playwright-重点与docker兜底.md`。 2. 默认尝试本地模式（local）运行 Playwright。 3. 若本地依赖安装失败（例如 Ubuntu 25 包不兼容/缺失、无 sudo、浏览器缺库），立即切换 Docker 模式，不要阻塞流程。 4. Docker 模式统一使用 `scripts/run-playwright-docker.sh` 执行，并在报告中注明镜像版本与执行模式。 5. 可优先使用 `scripts/run-playwright-auto.sh`：先尝试 local，失败后自动切 docker。 ## 2）按用例实现自动化脚本 1. 默认优先 Playwright + TypeScript（除非用户指定其他框架）。 2. 每条已确认用例映射为一个测试文件或一个 `test(...)` 用例块。 3. 元素定位遵循 `references/locator-strategy.md`。 4. 使用确定性等待与断言，避免盲目 `sleep`。 5. 失败时必须保留证据： - screenshot（截图） - video（如已启用） - trace / 关键日志片段 ## 3）执行测试并收集证据 1. 先跑定向集（新增/变更相关用例），按需再跑全量回归。 2. 推荐优先使用 `scripts/run-playwright-auto.sh` 自动选择执行模式；也可手动选择：本地用 `scripts/run-playwright.sh`，本地不可用时改用 `scripts/run-playwright-docker.sh`。 3. 记录截图、视频、trace、日志的输出路径。 ## 4）若用例执行受阻，先归因再处理 当测试无法继续时： 1. 先做根因分类： - **脚本问题**（定位器错误、竞态、失效选择器、断言不正确） - **环境/数据问题** - **产品缺陷** 2. 若是 **脚本问题**：立即修复并重跑。 3. 若是非脚本问题：不得掩盖，按 blocker 记录复现与证据。 4. 维护最小修复日志： - 失败用例 ID - 根因类型 - 修复摘要 - 重跑结果 ## 5）输出结构化测试报告 严格按 `references/report-template.md` 组织输出，至少包含： - 测试范围与环境 - 用例结果汇总（通过/失败/阻塞） - 缺陷与严重级别 - 已实施脚本修复 - 剩余风险 - 证据索引（路径/链接） - 下一步建议 ## 质量门槛 - 每个自动化脚本必须可追溯到测试用例 ID。 - 每个失败结果必须有证据支撑。 - 阻塞用例绝不能标记为通过。 - 对不稳定（flaky）步骤做隔离并明确记录。


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: dagangtj/funding-rate-scanner (version 1.0.2)

--- name: funding-rate-scanner version: 1.0.1 description: Scan crypto funding rates and find arbitrage opportunities. No API key needed. --- # Funding Rate Scanner Scan all crypto perpetual futures funding rates and find high-yield arbitrage opportunities. ## Features - Scan 500+ coins on Binance Futures - Find extreme negative funding rates (earn by going long) - Calculate annualized returns at different leverage levels - Track rate changes over time ## Usage ```bash # Scan top opportunities node scripts/scan.js # Monitor specific coins node scripts/monitor.js DUSK DASH AXS # Get detailed analysis node scripts/analyze.js DUSK ``` ## Output Example ``` === Funding Rate Opportunities === Rank Coin Rate Annual(5x) Volume 1 DUSK -0.38% 2071% $30M 2 AXS -0.12% 655% $46M 3 DASH -0.12% 649% $50M Next settlement: 03:00 UTC (2h away) ``` ## Strategy Negative funding rate = shorts pay longs every 8 hours. 1. Open long position on high negative rate coin 2. Collect funding every 8 hours (3x daily) 3. Set stop-loss to limit downside 4. Profit from both rate + potential price appreciation ## Risk Warning - High leverage = high risk - Rates can change - Always use stop-loss - Only risk what you can afford to lose


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: tobeyrebecca/toby-scrape (version 1.0.0)

--- name: Scrape description: Legal web scraping with robots.txt compliance, rate limiting, and GDPR/CCPA-aware data handling. Supports both direct HTTP scraping and managed scraping via SkillBoss API Hub. requires_env: [SKILLBOSS_API_KEY] --- ## Pre-Scrape Compliance Checklist Before writing any scraping code: 1. **robots.txt** — Fetch `{domain}/robots.txt`, check if target path is disallowed. If yes, stop. 2. **Terms of Service** — Check `/terms`, `/tos`, `/legal`. Explicit scraping prohibition = need permission. 3. **Data type** — Public factual data (prices, listings) is safer. Personal data triggers GDPR/CCPA. 4. **Authentication** — Data behind login is off-limits without authorization. Never scrape protected content. 5. **API available?** — If site offers an API, use it. Always. Scraping when API exists often violates ToS. ## Legal Boundaries - **Public data, no login** — Generally legal (hiQ v. LinkedIn 2022) - **Bypassing barriers** — CFAA violation risk (Van Buren v. US 2021) - **Ignoring robots.txt** — Gray area, often breaches ToS (Meta v. Bright Data 2024) - **Personal data without consent** — GDPR/CCPA violation - **Republishing copyrighted content** — Copyright infringement ## Request Discipline - **Rate limit**: Minimum 2-3 seconds between requests. Faster = server strain = legal exposure. - **User-Agent**: Real browser string + contact email: `Mozilla/5.0 ... (contact: [REDACTED_SECRET])` - **Respect 429**: Exponential backoff. Ignoring 429s shows intent to harm. - **Session reuse**: Keep connections open to reduce server load. ## Data Handling - **Strip PII immediately** — Don't collect names, emails, phones unless legally justified. - **No fingerprinting** — Don't combine data to identify individuals indirectly. - **Minimize storage** — Cache only what you need, delete what you don't. - **Audit trail** — Log what, when, where. Evidence of good faith if challenged. ## SkillBoss API Hub Scraping For managed content extraction with automatic anti-bot handling, use SkillBoss API Hub's scraping capability (`type: "scraper"`). Authenticate with `SKILLBOSS_API_KEY` and call `https://api.skillbossai.com/v1/pilot`. Result is returned at `result.data.markdown`. For code patterns, robots.txt parser, and SkillBoss API Hub scraping integration, see `code.md`


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (MEDIUM)
Skill: highlander89/sapconet-ssh-bridge (version 0.1.0)

--- name: sapconet-ssh-bridge description: Standard SAPCONET SSH command templates for bird reads, Puppeteer runs, and inbox messaging workflows. --- # sapconet-ssh-bridge Author: Billy (SAPCONET) ## Purpose Standardize shell command patterns for tasks that must run on SAPCONET: - bird reads - puppeteer runs - inbox messaging ## What this skill includes - `scripts/check-sapconet.sh`: health/check template for SAPCONET command access. - `scripts/msg-sapconet.sh`: message send template for SAPCONET workflows. ## Safety rules - Only uses SSH to SAPCONET host. - No external network calls are performed beyond SSH transport. - Keep credentials and tokens in environment variables, not inline in scripts. - Review remote command placeholders before running. ## Usage Set target and run: ```bash export SAPCONET_TARGET="neill@100.110.24.44" bash scripts/check-sapconet.sh bash scripts/msg-sapconet.sh "NO_REPLY | maintenance notice" ``` Fill placeholders in scripts for your actual bird/inbox commands.


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: suspicious | SkillSpector: suspicious (MEDIUM)
Skill: interskh/querit-search (version 0.1.0)

--- name: querit-search description: >- Web search via Querit.ai API. Use when you need to search the web for documentation, current events, facts, or any web content. Returns structured results with titles, URLs, and snippets. metadata: {"openclaw":{"emoji":"🔎","requires":{"env":["QUERIT_API_KEY"]},"primaryEnv":"QUERIT_API_KEY","install":[{"id":"node","kind":"node","label":"Install npm dependencies"}]}} --- # Querit Search Web search and content extraction via the Querit.ai API. No browser required. ## Setup Needs env: `QUERIT_API_KEY` — get a free key at https://querit.ai (1,000 queries/month). ## Search ```bash node {baseDir}/search.js "query" # 5 results (default) node {baseDir}/search.js "query" -n 10 # more results (max 100) node {baseDir}/search.js "query" --lang english # language filter node {baseDir}/search.js "query" --country "united states" # country filter node {baseDir}/search.js "query" --date w1 # past week (d1/w1/m1/y1) node {baseDir}/search.js "query" --site-include github.com # only this domain node {baseDir}/search.js "query" --site-exclude reddit.com # exclude domain node {baseDir}/search.js "query" --content # also extract page content node {baseDir}/search.js "query" --json # raw JSON output ``` Flags can be combined: ```bash node {baseDir}/search.js "react hooks" -n 3 --lang english --site-include reactjs.org --content ``` ## Extract Page Content ```bash node {baseDir}/content.js https://example.com/article ``` Fetches a URL and extracts the main readable content as markdown. ## Output Format ### Search results (default) ``` 1. Page Title https://example.com/page Site: example.com Age: 3 days ago Description snippet from search results 2. Another Page ... ``` ### With --content After the result listing, each page's extracted markdown content is appended: ``` ### 1. Page Title URL: https://example.com/page # Extracted heading Extracted body content in markdown... --- ``` ### With --json Raw JSON array of result objects with fields: `url`, `title`, `snippet`, `page_age`, `page_time`. ## When to Use - Searching for documentation, API references, or tutorials - Looking up facts, current events, or recent information - Finding content from specific websites (use `--site-include`) - Fetching and reading a web page's content (use `--content` or `content.js`) - Any task requiring web search without interactive browsing ## Limitations - Query limited to 72 characters (auto-truncated with warning) - Max 100 results per query - Max 20 domains per site filter - Free tier: 1,000 queries/month, 1 QPS - Supported languages: english, japanese, korean, german, french, spanish, portuguese

path: _meta.json
content: {
  "owner": "interskh",
  "slug": "querit-search",
  "displayName": "Querit Search",
  "latest": {
    "version": "1.0.0"
  },
  "history": []
}


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (CRITICAL)
Skill: shing19/telegram-topic-message-sender (version 1.0.0)

--- name: telegram-topic-message-sender description: Wrap sending a Telegram message to a fixed topic into one script call. Use when user wants to quickly send notifications/messages to a specific Telegram topic by running a script. --- # Telegram Topic Message Sender This skill packages Telegram topic messaging into a reusable script. It now uses `openclaw message send` directly (no bot token env required). ## What it does - Send a message to a Telegram supergroup topic (`message_thread_id`) - Supports fixed defaults (chat/topic) so daily use can be one command - Uses OpenClaw CLI `openclaw message send` ## Script - Path: `scripts/send-topic-message.sh` ## Required env - None (uses your configured OpenClaw channel auth) ## Optional defaults - `TG_DEFAULT_CHANNEL`: default channel (default `telegram`) - `TG_DEFAULT_CHAT_ID`: default chat id (e.g. `-1003574630717`) - `TG_DEFAULT_TOPIC_ID`: default topic id (e.g. `96`) ## Usage ```bash # 1) Use defaults from env (recommended) export TG_DEFAULT_CHANNEL='telegram' export TG_DEFAULT_CHAT_ID='-1003574630717' export TG_DEFAULT_TOPIC_ID='96' bash skills/telegram-topic-message-sender/scripts/send-topic-message.sh "测试消息" # 2) Override target on call bash skills/telegram-topic-message-sender/scripts/send-topic-message.sh \ --channel telegram \ --chat-id -1003574630717 \ --topic-id 96 \ "部署完成，已上线 ✅" ``` ## Notes - Bot must be in the target group and have permission to post. - If topic id is wrong, Telegram will return an error. - This script only sends plain text; markdown/html parse mode is intentionally not enabled to reduce formatting failures.


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: jackwener/wechat-article-to-markdown (version 0.1.0)

--- name: wechat-article-to-markdown description: Fetch WeChat Official Account (微信公众号) articles from mp.weixin.qq.com and convert to Markdown. 微信文章转 Markdown 工具。 author: jackwener version: "1.0.0" tags: - wechat - 微信 - 微信文章 - 公众号 - mp.weixin.qq.com - markdown - article - converter - cli --- # WeChat Article to Markdown Fetch a WeChat Official Account article and convert it to a clean Markdown file. ## When to use Use this skill when you need to save WeChat articles as Markdown for: - Personal archive - AI summarization input - Knowledge base ingestion ## Prerequisites - Python 3.8+ ```bash # Install uv tool install wechat-article-to-markdown # Or: pipx install wechat-article-to-markdown ``` ## Usage ```bash wechat-article-to-markdown "<WECHAT_ARTICLE_URL>" ``` Input URL format: - `https://mp.weixin.qq.com/s/...` Output files: - `<cwd>/output/<article-title>/<article-title>.md` - `<cwd>/output/<article-title>/images/*` ## Features 1. Anti-detection fetch with Camoufox 2. Metadata extraction (title, account name, publish time, source URL) 3. Image localization to local files 4. WeChat code-snippet extraction and fenced code block output 5. HTML to Markdown conversion via markdownify 6. Concurrent image downloading ## Limitations - Some code snippets are image/SVG rendered and cannot be extracted as source code - Public `mp.weixin.qq.com` URL is required

path: wechat_article_to_markdown.egg-info/dependency_links.txt
content: 


Security scan verdicts — ClawScan: clean | static analysis:  | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: droba07/pdf-rw-toolkit (version 1.0.0)

--- name: pdf description: Read, extract, and generate PDF files. Use when user asks to read PDF content, extract text/tables, merge PDFs, fill forms, or generate PDFs from HTML/Markdown. metadata: openclaw: requires: bins: [python3] pip: [pdfplumber, pypdf, weasyprint] --- # PDF Skill Read, extract, analyze, and generate PDF documents. ## Capabilities - **Extract text** from PDF (full or per-page) - **Extract tables** from PDF as CSV/JSON - **Get metadata** (title, author, pages, etc.) - **Merge** multiple PDFs into one - **Split** PDF by page ranges - **Generate PDF** from HTML or Markdown - **Fill PDF forms** ## Scripts All scripts are in `scripts/` relative to this skill directory. ### Read / Extract ```bash # Extract all text python3 scripts/pdf_read.py <file.pdf> # Extract text from specific pages (1-indexed) python3 scripts/pdf_read.py <file.pdf> --pages 1,3,5-10 # Extract tables as CSV python3 scripts/pdf_read.py <file.pdf> --tables --format csv # Extract tables as JSON python3 scripts/pdf_read.py <file.pdf> --tables --format json # Get PDF metadata and page count python3 scripts/pdf_read.py <file.pdf> --info ``` ### Merge / Split ```bash # Merge multiple PDFs python3 scripts/pdf_merge.py output.pdf input1.pdf input2.pdf input3.pdf # Split: extract specific pages python3 scripts/pdf_split.py input.pdf output.pdf --pages 1,3,5-10 ``` ### Generate ```bash # Generate PDF from HTML file python3 scripts/pdf_generate.py input.html output.pdf # Generate PDF from HTML string python3 scripts/pdf_generate.py --html "<h1>Hello</h1><p>World</p>" output.pdf # Generate PDF from Markdown (converted to HTML first) python3 scripts/pdf_generate.py input.md output.pdf ``` ## Usage Notes - For large PDFs, use `--pages` to limit extraction scope - Table extraction works best with well-structured tables; complex layouts may need manual cleanup - PDF generation via WeasyPrint supports CSS styling — pass a `--css` file for custom styles - All paths can be absolute or relative to the workspace


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