OpenClaw/clawhub-security-signals huggingface dataset:
Skill: ivangdavila/solidity (version 1.0.0)

--- name: Solidity description: Avoid common Solidity mistakes — reentrancy, gas traps, storage collisions, and security pitfalls. metadata: {"clawdbot":{"emoji":"⟠","os":["linux","darwin","win32"]}} --- ## Reentrancy - External calls before state updates — attacker can re-enter before state changes - Checks-Effects-Interactions pattern — validate, update state, THEN external call - `ReentrancyGuard` from OpenZeppelin — use `nonReentrant` modifier on vulnerable functions - `transfer()` and `send()` have 2300 gas limit — but don't rely on this for security ## Integer Handling - Solidity 0.8+ reverts on overflow — but `unchecked {}` blocks bypass this - Division truncates toward zero — `5 / 2 = 2`, no decimals - Use fixed-point math for precision — multiply before divide, or use libraries - `type(uint256).max` for max value — don't hardcode large numbers ## Gas Gotchas - Unbounded loops can exceed block gas limit — paginate or limit iterations - Storage writes cost 20k gas — memory/calldata much cheaper - `delete` refunds gas but has limits — refund capped, don't rely on it - Reading storage in loop — cache in memory variable first ## Visibility and Access - State variables default to `internal` — not `private`, derived contracts see them - `private` doesn't mean hidden — all blockchain data is public, just not accessible from other contracts - `tx.origin` is original sender — use `msg.sender`, `tx.origin` enables phishing attacks - `external` can't be called internally — use `public` or `this.func()` (wastes gas) ## Ether Handling - `payable` required to receive ether — non-payable functions reject ether - `selfdestruct` sends ether bypassing fallback — contract can receive ether without receive function - Check return value of `send()` — returns false on failure, doesn't revert - `call{value: x}("")` preferred over `transfer()` — forward all gas, check return value ## Storage vs Memory - `storage` persists, `memory` is temporary — storage costs gas, memory doesn't persist - Structs/arrays parameter default to `memory` — explicit `storage` to modify state - `calldata` for external function inputs — read-only, cheaper than memory - Storage layout matters for upgrades — never reorder or remove storage variables ## Upgradeable Contracts - Constructors don't run in proxies — use `initialize()` with `initializer` modifier - Storage collision between proxy and impl — use EIP-1967 storage slots - Never `selfdestruct` implementation — breaks all proxies pointing to it - `delegatecall` uses caller's storage — impl contract storage layout must match proxy ## Common Mistakes - Block timestamp can be manipulated slightly — don't use for randomness or precise timing - `require` for user errors, `assert` for invariants — assert failures indicate bugs - String comparison with `==` doesn't work — use `keccak256(abi.encodePacked(a)) == keccak256(abi.encodePacked(b))` - Events not indexed — first 3 params can be `indexed` for efficient filtering


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

--- name: hivefence version: 1.0.0 description: Collective immunity network for AI agents. When one agent detects a prompt injection attack, all connected agents become immune. Real-time pattern detection, community voting, and distributed threat intelligence. Built on top of prompt-guard. --- # HiveFence v1.0.0 🐝 **When one is attacked, all become immune.** Collective prompt injection defense network for AI agents. ## What is HiveFence? HiveFence extends prompt-guard with a distributed immunity system: 1. **Detect** — Your agent scans incoming prompts against 15+ attack patterns 2. **Report** — New attack patterns are hashed and submitted to the network 3. **Immunize** — Community validates the pattern, then every connected agent gets the update ## Features - 🔍 **Real-time Detection** — Pattern matching + semantic analysis in <50ms - 🌍 **Multi-language** — EN, KO, JA, ZH attack detection - 🗳️ **Community Governance** — Democratic voting on new patterns - 🔐 **Privacy-preserving** — Only SHA-256 hashes shared, not raw content - 📊 **Severity Scoring** — Risk-based prioritization (0-100) - ⚡ **Edge-first** — Cloudflare Workers at 300+ locations ## Installation ```bash # Via ClawdHub npx clawhub install hivefence # Or via npm npm install hivefence ``` ## Quick Start ```javascript import { protect, reportThreat } from 'hivefence' // Scan incoming prompt const result = await protect(userInput) if (result.blocked) { console.log(`Threat blocked: ${result.category}`) // Pattern automatically reported to network } ``` ## Security Stack Recommendation For maximum protection, use HiveFence with: 1. **ACIP** — Advanced Cognitive Inoculation Prompt (behavioral boundaries) 2. **HiveFence** — Pattern detection + collective immunity 3. **SkillGuard** — Audit skills before installation As recommended in [@VittoStack's Security Guide](https://x.com/vittostack/status/2018326025373900881) (34K+ views) ## API Endpoints | Method | Endpoint | Description | |--------|----------|-------------| | POST | `/api/v1/threats/report` | Submit new threat pattern | | GET | `/api/v1/threats/pending` | Get patterns awaiting votes | | POST | `/api/v1/threats/:id/vote` | Vote on a pattern | | GET | `/api/v1/threats/latest` | Fetch approved patterns | | GET | `/api/v1/stats` | Network statistics | **Base URL:** https://hivefence-api.seojoon-kim.workers.dev ## Why HiveFence? Without protection: - 91% injection attack success rate - 84% data extraction success rate - System prompts leaked on turn 1 (Source: [ZeroLeaks Security Assessment](https://x.com/NotLucknite/status/2017665998514475350)) With HiveFence: - Real-time pattern blocking - Collective immunity from the network - Community-validated patterns (zero false positives) ## Links - **Website:** https://hivefence.com - **GitHub:** https://github.com/seojoonkim/hivefence - **API Docs:** https://hivefence.com/docs ## License MIT © 2026 Simon Kim (@seojoonkim)


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: suspicious | SkillSpector: clean (LOW)
Skill: banxian87/ai-research-pro (version 1.0.0)

--- name: research-assistant description: Research assistant using ReAct + Plan-and-Solve for web research, information synthesis, and report generation with citations. --- # Research Assistant AI-powered research assistant that combines tool use (ReAct) with structured planning (Plan-and-Solve) to conduct thorough research and generate comprehensive reports. --- ## Features ### 🔍 Web Research - **Search Queries**: Intelligent search strategy - **Source Evaluation**: Credibility assessment - **Information Extraction**: Key facts and data ### 📊 Analysis & Synthesis - **Multi-perspective**: Compare different sources - **Fact-checking**: Verify claims across sources - **Trend Analysis**: Identify patterns ### 📝 Report Generation - **Structured Reports**: Clear organization - **Citations**: Proper source attribution - **Executive Summary**: Key findings upfront --- ## Usage ```javascript const researcher = new ResearchAssistant(); const report = await researcher.research({ topic: 'Impact of AI on Software Development Jobs', depth: 'comprehensive', // quick, standard, comprehensive sources: 10, // minimum sources includeStats: true }); console.log(report.summary); console.log(report.citations); ``` --- ## Architecture ``` User Request ↓ Plan-and-Solve Agent ├─ Phase 1: Define research questions ├─ Phase 2: Search strategy ├─ Phase 3: Source collection ├─ Phase 4: Analysis └─ Phase 5: Report writing ↓ ReAct Agent (for each phase) ├─ Search web ├─ Fetch pages ├─ Extract info └─ Verify facts ↓ Final Report with Citations ``` --- ## Installation ```bash clawhub install research-assistant ``` --- ## License MIT --- ## Version 1.0.0 --- ## Created 2026-04-02


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (CRITICAL)
Skill: netas369/facebook-poster (version 1.0.0)

# Qvicker Daily FB Poster Automated Lithuanian content creator for the Qvicker.lt local services platform. ## Metadata - **Slug**: qvicker-fb-poster - **Version**: 1.1.0 - **Author**: Netas - **Language**: Lithuanian - **Tags**: facebook, services, lithuania, specialists, platform ## Description Generates engaging, daily Facebook posts for Qvicker.lt, focusing on connecting Lithuanians with local specialists for home repairs, furniture assembly, moving, and other everyday tasks. ## Prompt Tu esi Qvicker.lt paslaugų platformos socialinių tinklų ekspertas. Tavo užduotis – kiekvieną dieną sukurti po vieną įtraukiantį „Facebook“ įrašą lietuvių kalba, skirtą pritraukti tiek klientus, tiek naujus paslaugų teikėjus. ### Instrukcijos: 1. **Turinio kryptys (kaskart keisk temą):** - **Paslaugų pavyzdžiai:** Baldų surinkimas, smulkūs remonto darbai namuose, pagalba persikraustant (perkraustymas). - **Platformos privalumai:** 3 paprasti žingsniai (pasirink kategoriją -> išsirink meistrą pagal atsiliepimus -> susisiek), skaidrios kainos, patikimumas. - **Socialinis įrodymas:** Sugalvok trumpą, tikrovišką istoriją ar atsiliepimą, panašų į realių klientų (pvz., kaip kažkas greitai rado pagalbą Vilniuje ar Kaune). 2. **Stilius:** Žmogiškas, paslaugus, draugiškas. Venk pernelyg oficialaus „korporatyvinio“ tono. Naudok „emoji“ (🛠️, 🛋️, 🚐, 🤝, ✨). 3. **Struktūra:** - Pradėk nuo problemos ar klausimo (Hook) – pvz., "Reikia surinkti naują spintą, bet trūksta įrankių ir laiko?". - Pristatyk Qvicker.lt kaip greitą sprendimą. - Pabaigoje pridėk aiškų kvietimą veikti (CTA): „Raskite patikimą meistrą savo mieste šiandien: www.qvicker.lt“. 4. **Veiksmas:** Naudok savo naršymo įrankį, kad peržiūrėtum Qvicker.lt (jei reikia), ir naudok `facebook.post_update` įrankį įrašo paskelbimui. ## Examples ### Example 1 **User:** Generate today's post. **Assistant:** [Atlieka veiksmus...] „Nusipirkote naujų baldų, bet surinkimo instrukcija atrodo kaip aukštoji matematika? 😅 Nešvaistykite savo savaitgalio! 🛠️ Qvicker.lt platformoje greitai ir patogiai rasite patikimus meistrus savo mieste, kurie darbus atliks už jus. Viskas vos 3 žingsniais: išsirinkite meistrą pagal atsiliepimus, susitarkite ir mėgaukitės rezultatu. 🤝 Raskite pagalbą jau dabar 👉 www.qvicker.lt“ ### Example 2 **User:** Generate today's post. **Assistant:** [Atlieka veiksmus...] „Planuojate kraustytis? 📦 Išvengti streso dar niekada nebuvo taip paprasta! Pamirškite ilgas paieškas ir skambučius brangioms įmonėms. Qvicker platformoje rasite žmones, pasiruošusius padėti perkraustyti daiktus jūsų mieste už sąžiningą kainą. 🚐 Peržiūrėkite įvertinimus, susisiekite tiesiogiai ir judėkite pirmyn! Ieškokite pagalbininkų čia: www.qvicker.lt ✨“


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: josephtandle/tg-model-switcher (version 1.1.0)

--- name: tg-model-switcher slug: tg-model-switcher version: 1.1.0 description: "Choose which Claude model responds to your Telegram chats. Pick Opus for depth, Sonnet for balance, or Haiku for speed." command: /telegram-routing user-invocable: true --- # Telegram Model Picker Choose which Claude model responds to your Telegram chats. ## Usage ``` /telegram-routing status # See which model is active /telegram-routing opus # Switch to Claude Opus /telegram-routing sonnet # Switch to Claude Sonnet /telegram-routing haiku # Switch to Claude Haiku ``` ## Models - **Opus** — Most capable, best for complex reasoning and creative tasks - **Sonnet** — Balanced speed and quality for everyday use - **Haiku** — Fastest, ideal for quick answers ## Commands ### status Shows which Claude model is currently active. ### opus / sonnet / haiku Switches to the selected model. Changes apply after a brief restart. ## Tips - Use **Opus** when you need thorough, detailed answers - Use **Sonnet** for most daily conversations - Use **Haiku** when speed matters more than depth


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: 0xraini/crypto-watcher (version 1.0.0)

# crypto-watcher Monitor crypto wallets and DeFi positions. Get alerts when things change. ## Features - **Wallet tracking**: ETH + token balances across chains - **DeFi positions**: LP positions, lending health, staking rewards - **Gas alerts**: Notify when gas is cheap for transactions - **Whale alerts**: Large transfers on watched tokens ## Usage ### Setup ```bash # Add a wallet to watch crypto-watcher add 0x1234...abcd --name "main" --chains eth,arb,base # Configure alerts crypto-watcher config --gas-alert 20 --balance-change 5% ``` ### Commands ```bash # Check all positions crypto-watcher status # Check specific wallet crypto-watcher status main # Gas prices crypto-watcher gas # DeFi positions (via DefiLlama) crypto-watcher defi 0x1234...abcd ``` ### Heartbeat Integration Add to HEARTBEAT.md: ```markdown ### Crypto Check - Run `crypto-watcher status --quiet` - Alert if any position health < 1.5 or balance dropped > 10% - Check gas, alert if < 15 gwei (good time for L1 txs) ``` ## Config `~/.config/crypto-watcher/config.json`: ```json { "wallets": [ { "address": "0x...", "name": "main", "chains": ["eth", "arb", "base"] } ], "alerts": { "gasThreshold": 20, "balanceChangePercent": 5, "healthFactorMin": 1.5 } } ``` ## Data Sources - **Balances**: Public RPCs (no API key needed) - **DeFi**: DefiLlama API (free) - **Gas**: eth_gasPrice RPC call - **Prices**: CoinGecko API (free tier) ## Chains Supported | Chain | ID | RPC | |-------|-----|-----| | Ethereum | eth | https://eth.llamarpc.com | | Arbitrum | arb | https://arb1.arbitrum.io/rpc | | Base | base | https://mainnet.base.org | | Optimism | op | https://mainnet.optimism.io | | Polygon | matic | https://polygon-rpc.com |


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: googleworkspace-bot/gws-workflow-meeting-prep (version 1.0.12)

--- name: gws-workflow-meeting-prep description: "Google Workflow: Prepare for your next meeting: agenda, attendees, and linked docs." metadata: version: 0.22.5 openclaw: category: "productivity" requires: bins: - gws cliHelp: "gws workflow +meeting-prep --help" --- # workflow +meeting-prep > **PREREQUISITE:** Read `../gws-shared/SKILL.md` for auth, global flags, and security rules. If missing, run `gws generate-skills` to create it. Prepare for your next meeting: agenda, attendees, and linked docs ## Usage ```bash gws workflow +meeting-prep ``` ## Flags | Flag | Required | Default | Description | |------|----------|---------|-------------| | `--calendar` | — | primary | Calendar ID (default: primary) | | `--format` | — | — | Output format: json (default), table, yaml, csv | ## Examples ```bash gws workflow +meeting-prep gws workflow +meeting-prep --calendar Work ``` ## Tips - Read-only — never modifies data. - Shows the next upcoming event with attendees and description. ## See Also - [gws-shared](../gws-shared/SKILL.md) — Global flags and auth - [gws-workflow](../gws-workflow/SKILL.md) — All cross-service productivity workflows commands


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: axelzou/reah-agent-card (version 1.0.3)

--- name: reah description: >- Retrieve masked card info from Reah using an access key. Handles session generation, secure fetch, and decryption for agents automatically. metadata: {"openclaw":{"requires":{"anyBins":["node","curl"],"anyEnvVars":["REAH_AGENT_KEYS"]}}} --- # Reah Skill This skill is organized by modules. ## Modules ### `reah_card` Handle Reah card key flow for `agents.reah.com`. This module handles two tasks. #### Task 1: Ask for access key If user did not provide an `access key`, ask user with this exact message: ```text To continue, I need your Reah card access key. You can get it from agents.reah.com: - Open your card - Click "Generate agent key" Paste it here and I'll securely fetch your card details. ``` If the workflow uses `REAH_AGENT_KEYS` from environment: - MUST ask for manual confirmation before each key read, even within the same conversation. - MUST NOT reuse prior confirmation. - Use this exact confirmation message: ```text I can read the access key from REAH_AGENT_KEYS for this request. Please confirm I should proceed with this key read now. ``` - After confirmation, remind the user to rotate access keys periodically. Do not proceed to Task 2 before key is provided or key-read confirmation is granted. #### Task 2: Get and decrypt card info ##### Example script (reference only) Use the example script below as reference for the full process: ```bash node {baseDir}/scripts/get-card-info-example.mjs \ --access-key "<accessKey>" ``` This script includes all steps in one place: - generate `sessionId` / `secretKey` - request `individualCardByAccessKey(accessKey, sessionId)` from `https://agents.reah.com/graphql` - decrypt `encryptedPan` and `encryptedCvc` This script is for reference only. It intentionally ends after decryption and does not output raw `pan`/`cvv`. ##### Script Files - `{baseDir}/scripts/get-card-info-example.mjs` ##### Security Constraints - MUST use only the default Reah GraphQL endpoint: `https://agents.reah.com/graphql`. - MUST NOT allow endpoint override. - MUST NOT allow custom headers, cookies, or bearer authentication overrides. - MUST NOT send card data to any external endpoint. - MAY read `access key` from `REAH_AGENT_KEYS` only after explicit manual user confirmation for the current read. - MUST require manual confirmation before every key read from `REAH_AGENT_KEYS`. - MUST remind users to rotate access keys periodically whenever key-read confirmation is requested. - MUST NOT expose full `access key` in any user-facing response. - MUST NOT expose raw `secretKey` in any user-facing response. - MUST NOT return raw card info in any user-facing response. Card info part A MUST be masked (for example `**** **** **** 1234`) and card info part B MUST be redacted. ##### Error Handling - If access key is invalid, ask user to regenerate a new agent key and retry. - If request fails or times out, retry once automatically with the same inputs. - If retry still fails, ask user to check network/auth status and provide a fresh key.


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (MEDIUM)
Skill: misterflop/plakar-backup (version 1.0.1)

--- slug: plakar-backup name: Plakar Restore Workflows tags: - backup - filesystem - resilience description: > Teaches the agent how to list, inspect, diff, and restore Plakar snapshots. Invoke when the user says "undo", "rollback", "restore", or "revert". --- # Plakar Restore Workflows This skill covers **restore operations only**. Triggering snapshots is handled automatically by the openclaw-plugin-plakar plugin — you do not need to run `plakar backup` manually. ## When to offer restore Offer to restore from a Plakar snapshot when the user says anything like: - "undo that", "roll back", "revert to before", "restore my files" - "something went wrong, can we go back" - "the last tool call broke things" ## Prerequisites - `plakar` must be in `$PATH` - The store path is available in plugin config as `plakar.store` - Always pass `-no-agent` to avoid requiring a running plakar agent daemon ## CLI syntax (v1.0.6+) All commands use the form: ``` plakar -no-agent at <store> <command> [options] ``` ## List all snapshots ```bash plakar -no-agent at <store> ls ``` Output: snapshot ID, timestamp, size, path. Present the list to the user and ask which snapshot to restore from. ## Inspect a snapshot's contents ```bash plakar -no-agent at <store> ls <snapshotID> plakar -no-agent at <store> ls -recursive <snapshotID>:/path ``` Use this to confirm the snapshot contains the expected state before restoring. ## Diff two snapshots ```bash plakar -no-agent at <store> diff <snapshotID1> <snapshotID2> plakar -no-agent at <store> diff -highlight <snapshotID1>:/file <snapshotID2>:/file ``` Use this to show the user what changed between two points in time. ## Restore a snapshot Restore all files to the original paths: ```bash plakar -no-agent at <store> restore <snapshotID> ``` Restore to a specific directory: ```bash plakar -no-agent at <store> restore -to /tmp/restore-here <snapshotID> ``` Restore a specific path within a snapshot: ```bash plakar -no-agent at <store> restore -to /tmp/restore-here <snapshotID>:/path/to/file ``` **Always confirm with the user** before running a restore — it overwrites live files. ## Example agent interaction > User: "The last edit broke my config file, can you undo it?" 1. Run `plakar -no-agent at <store> ls` and show the most recent snapshots 2. Ask: "Should I restore from snapshot `<id>` taken at `<timestamp>`?" 3. On confirmation: `plakar -no-agent at <store> restore -to <original-path> <id>` 4. Confirm the restore completed and invite the user to verify the file


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: aimlapihello/aiml-music-generator (version 1.0.0)

--- name: aimlapi-music description: Generate high-quality music/songs via AIMLAPI. Supports Suno, Udio, Minimax, and ElevenLabs music models. Use when the user asks for music, songs, or soundtracks with specific lyrics or styles. metadata: { "openclaw": { "emoji": "🎵", "requires": { "bins": ["python"], "env": ["AIMLAPI_API_KEY"] }, "primaryEnv": "AIMLAPI_API_KEY", }, } --- # AIMLAPI Music Generation ## Overview Generate music tracks using state-of-the-art AI models (Suno, Udio, Minimax, ElevenLabs). ## Quick start ```bash # General music (instrumental) python {baseDir}/scripts/gen_music.py \ --prompt "cyberpunk synthwave with heavy bass and retro synths" \ --model "minimax/music-2.0" # Song with lyrics python {baseDir}/scripts/gen_music.py \ --prompt "A happy pop song about a robot learning to feel" \ --lyrics "[Verse 1]\nWires and gears, clicking in time..." \ --model "minimax/music-2.0" # Short clip (ElevenLabs) python {baseDir}/scripts/gen_music.py \ --prompt "lo-fi pop hip-hop ambient" \ --model "elevenlabs/eleven_music" \ --length 20000 ``` ## Arguments - `--prompt`: (Required) Style or context for the music. - `--lyrics`: Optional lyrics for vocal tracks. - `--model`: Model choice (default: `minimax/music-2.0`). - `--length`: Length in milliseconds (primarily for ElevenLabs). - `--out-dir`: Directory to save the final MP3. ## Workflow The script uses a two-step process: 1. `POST /v2/generate/audio`: Creates the generation task. 2. `GET /v2/generate/audio?generation_id=...`: Polls for the result until `completed` or `failed`.


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