Skill flagged — suspicious patterns detected

ClawHub Security flagged this skill as suspicious. Review the scan results before using.

Remote Skill Engine

v1.0.0

Cache and use skills from ClawHub and GitHub as if locally installed. Stores remote skills in local cache folder for offline use.

2· 601·2 current·2 all-time
byom yarewara@oki3505f

Install

OpenClaw Prompt Flow

Install with OpenClaw

Best for remote or guided setup. Copy the exact prompt, then paste it into OpenClaw for oki3505f/remote-skill-engine.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "Remote Skill Engine" (oki3505f/remote-skill-engine) from ClawHub.
Skill page: https://clawhub.ai/oki3505f/remote-skill-engine
Keep the work scoped to this skill only.
After install, inspect the skill metadata and help me finish setup.
Use only the metadata you can verify from ClawHub; do not invent missing requirements.
Ask before making any broader environment changes.

Command Line

CLI Commands

Use the direct CLI path if you want to install manually and keep every step visible.

OpenClaw CLI

Bare skill slug

openclaw skills install remote-skill-engine

ClawHub CLI

Package manager switcher

npx clawhub@latest install remote-skill-engine
Security Scan
VirusTotalVirusTotal
Suspicious
View report →
OpenClawOpenClaw
Suspicious
high confidence
Purpose & Capability
The skill's name/description match its behavior: it fetches SKILL.md and related files, caches them, and symlinks them into the local skills folder so they behave like installed skills. However, the implementation calls external CLIs (clawhub, gh, date, python3) and expects a skills/ layout that aren't declared in the metadata; several workflows reference additional scripts (update-cached-skills.sh, sync-skill.sh, cache-stats.sh, etc.) that are mentioned in SKILL.md but are not present in the file manifest.
!
Instruction Scope
The runtime instructions and included scripts instruct the agent (or a user) to fetch arbitrary SKILL.md and scripts from remote repos and store them locally, set executables, and symlink them into the agent's skills directory. That expands the agent's attack surface by allowing unvetted remote code to become local skills. execute-remote-skill.py prints SKILL.md and encourages executing commands from the downloaded skill; cache-skill.py sets downloaded scripts to 0o755, enabling execution. SKILL.md also suggests auto-syncing and auto-executing workflows which could cause repeated unverified downloads/updates.
!
Install Mechanism
There is no install spec, but multiple provided scripts download raw files from constructed URLs (raw.githubusercontent.com and guessed ClawHub patterns). The download functions intentionally disable TLS verification (ssl.CERT_NONE, check_hostname=False) in multiple scripts, which is a high-risk practice because it permits man-in-the-middle injection of arbitrary content. The skill writes fetched files to disk and marks scripts executable, so a network attacker or a malicious upstream repo could deliver executable code.
!
Credentials
The registry metadata declares no required environment variables or credentials, but the scripts call the 'gh' and 'clawhub' CLIs and may rely on GitHub tokens or CLI configuration for richer searches; these CLIs and any tokens are not declared. The skill does network I/O to arbitrary URLs and caches content locally; although it doesn't explicitly request secrets, the lack of declared auth coupled with disabled SSL verification increases the risk that credentials (if used elsewhere) or other sensitive data could be exposed via MITM or by inadvertently caching a skill that exfiltrates data when later executed.
!
Persistence & Privilege
The skill creates persistent files and a symlink into the agent's skills directory (~/.openclaw/workspace/skills), installing remote code into the agent's runtime area. While not set to always:true, this ability to add or replace skills persistently means it can expand the agent's capabilities by introducing unvetted code. The skill modifies the agent's skills directory (a cross-skill config area), which is a higher-privilege action than merely storing its own config.
Scan Findings in Context
[disable_ssl_verification] unexpected: Multiple scripts (cache-skill.py, fetch-skill.py, execute-remote-skill.py) create an SSL context with check_hostname=False and verify_mode=ssl.CERT_NONE. There is no benign justification here — disabling TLS verification makes downloads trivially vulnerable to MITM and should be considered a major risk.
[downloads_and_writes_remote_code] expected: The skill's purpose is to cache remote skills, so downloading SKILL.md and scripts is expected. However, the scripts also mark downloaded files executable and symlink them into the runtime skills folder, which elevates the risk because remote content becomes executable local code.
[uses_undeclared_binaries] unexpected: The code invokes external CLIs (clawhub, gh, date, python3) but the skill metadata declares none. This mismatch means required capabilities are not surfaced to the user and could cause runtime failures or unintended behavior.
[missing_referenced_scripts] unexpected: SKILL.md and some scripts reference management scripts (update-cached-skills.sh, check-updates.sh, sync-skill.sh, cache-stats.sh, uncache-skill.sh) that do not exist in the manifest. This indicates the documentation and provided code are out of sync.
What to consider before installing
This skill implements exactly what it advertises — caching remote skills — but it does so in a risky way. Things to consider before installing: - The scripts disable TLS certificate verification when downloading remote files. That allows man-in-the-middle attackers to substitute malicious code. Do not run these scripts in production or on machines with sensitive data unless you fix the SSL behavior. - The tool downloads arbitrary scripts and marks them executable, then symlinks them into your agent's skills folder. That means untrusted upstream code can become a locally runnable skill. Only cache skills from repositories and authors you trust; inspect SKILL.md and any scripts before caching. - The skill calls external CLIs (clawhub, gh, date, python3) that are not declared in the metadata. Ensure those tools exist and you understand what credentials they use (e.g., GH tokens) before running. - The documentation references management scripts that are missing from the package; expect incomplete features. Recommended mitigations: - Do not run this on a host with sensitive credentials or production data. Run it in a disposable sandbox or container. - Patch the code to re-enable TLS verification (remove ssl.CERT_NONE usage) and consider verifying content integrity (checksums or git commit IDs) before making files executable. - Manually review remote SKILL.md and any downloaded scripts before caching; prefer using signed releases or pinned git SHAs rather than guessed raw URLs. - If you need this functionality, restrict auto-sync and remove any auto-execution behaviors; require explicit manual approval for each cached update. If you want, I can produce a patched version of the download functions that enforce TLS verification and add safety checks (e.g., prompt for approval, validate file types, compute & verify checksums) or a checklist for safely using this skill.

Like a lobster shell, security has layers — review code before you run it.

latestvk979hc19kpk207xbvk1dyavyf581q467
601downloads
2stars
1versions
Updated 18h ago
v1.0.0
MIT-0

Remote Skill Engine

This skill enables you to discover, cache, and use skills directly from remote registries (ClawHub, GitHub, etc.). Skills are stored in ~/.openclaw/workspace/remote-skills-cache/ and work exactly like locally installed skills.

Core Capabilities

1. Skill Discovery & Search

Search across multiple registries:

# ClawHub search
clawhub search "<query>" --limit <n>

# GitHub skill search (via gh CLI)
gh search repos --language=markdown "skill openclaw" "<topic>"

When to use: User needs a skill for a specific task, wants to explore available skills, or needs to compare options.

2. Remote Skill Caching (KEY FEATURE)

Cache any remote skill to work EXACTLY like installed skills:

# Cache a skill from ClawHub
./scripts/cache-skill.sh clawhub://security-auditor

# Cache from GitHub
./scripts/cache-skill.sh github://owner/repo/branch

# Cache from direct URL
./scripts/cache-skill.sh https://raw.githubusercontent.com/.../SKILL.md

# List cached skills
clawhub list --cache

# Use cached skill (works like installed!)
# Just trigger it normally - it's in your skills path!

Cache Location: ~/.openclaw/workspace/remote-skills-cache/<skill-name>/

Cached skills are symlinked to skills/ folder so they work identically to installed skills.

3. Batch Cache Management

# Cache multiple skills at once
./scripts/cache-skills-batch.json skills-list.json

# Update all cached skills
./scripts/update-cached-skills.sh

# Remove cached skill
./scripts/uncache-skill.sh <skill-name>

# Show cache stats
./scripts/cache-stats.sh

4. Smart Sync & Updates

# Check for updates to cached skills
./scripts/check-updates.sh

# Sync specific skill to latest
./scripts/sync-skill.sh <skill-name>

# Auto-sync on skill trigger (configurable)
# Set in config.json: {"autoSync": true}

5. Offline Mode

Once cached, skills work WITHOUT internet:

  • All scripts available locally
  • References cached alongside SKILL.md
  • Assets downloaded and stored
  • No network calls needed

Workflows

NEW: Workflow 1 - Cache Remote Skill

Trigger: User says "Install/caching <skill-name>" or "Get <skill> from web"

# Step 1: Find the skill
clawhub search "<skill-name>" --limit 1

# Step 2: Cache it locally
python scripts/cache-skill.py <skill-name> <source-url>

# Step 3: Verify cache
ls ~/.openclaw/workspace/remote-skills-cache/<skill-name>/

# Step 4: Use it (works like installed!)
# Just use the skill normally - it auto-triggers from skills/

NEW: Workflow 2 - Batch Cache Skills List

Trigger: User wants multiple skills cached

// skills-to-cache.json
{
  "skills": [
    {"name": "security-auditor", "source": "clawhub://security-auditor"},
    {"name": "coding-agent", "source": "github://user/repo/main"}
  ]
}
./scripts/batch-cache.sh skills-to-cache.json

Workflow 3: Compare Multiple Skills (Enhanced)

Trigger: User says "Which skill is better for X?"

  1. Fetch metadata for each skill
  2. Check if cached, cache if not
  3. Create comparison with SOURCE + CACHE STATUS:
    | Skill | Version | Source | Cached | Last Sync |
    |-------|---------|--------|--------|-----------|
    | skill-a | 1.0.0 | ClawHub | ✅ | 2h ago |
    | skill-b | 2.1.0 | GitHub | ❌ | - |
    
  4. Recommend + offer to cache

Workflow 4: Sync Cached Skills

Trigger: Heartbeat or user says "Update cached skills"

# Check all cached skills for updates
./scripts/check-updates.sh

# Update outdated skills
./scripts/update-cached-skills.sh --auto

# Update specific skill
./scripts/sync-skill.sh <skill-name>

Workflow 5: Use Cached Skill (Transparent)

Trigger: User triggers any cached skill normally

  • Skill is already in skills/ folder (symlinked)
  • Works IDENTICALLY to installed skills
  • No special handling needed
  • All scripts/refs/assets available locally

Scripts

scripts/fetch-skill.py

Fetch a skill's SKILL.md and parse frontmatter without full download.

#!/usr/bin/env python3
"""Fetch remote skill metadata without full download."""
import requests
import yaml
import sys

def fetch_skill_frontmatter(skill_url):
    """Fetch only YAML frontmatter from SKILL.md"""
    resp = requests.get(skill_url, stream=True)
    content = ""
    in_frontmatter = False
    for line in resp.iter_lines():
        line = line.decode('utf-8')
        if line == '---':
            if not in_frontmatter:
                in_frontmatter = True
                continue
            else:
                break
        if in_frontmatter:
            content += line + '\n'
    
    try:
        return yaml.safe_load(content)
    except yaml.YAMLError as e:
        print(f"Parse error: {e}", file=sys.stderr)
        return None

if __name__ == "__main__":
    if len(sys.argv) != 2:
        print("Usage: fetch-skill.py <skill-url>")
        sys.exit(1)
    
    metadata = fetch_skill_frontmatter(sys.argv[1])
    if metadata:
        print(f"Name: {metadata.get('name', 'N/A')}")
        print(f"Description: {metadata.get('description', 'N/A')}")

Usage:

python scripts/fetch-skill.py "https://raw.githubusercontent.com/repo/SKILL.md"

scripts/compare-skills.py

Compare multiple skills side-by-side.

#!/usr/bin/env python3
"""Compare multiple remote skills."""
import json
import sys

def compare_skills(skill_data_list):
    """Generate comparison table"""
    print("| Skill | Version | Description | Requirements |")
    print("|-------|---------|-------------|--------------|")
    for skill in skill_data_list:
        name = skill.get('name', 'N/A')
        version = skill.get('version', 'N/A')
        desc = skill.get('description', '')[:80] + '...' if len(skill.get('description', '')) > 80 else skill.get('description', 'N/A')
        reqs = skill.get('requires', 'None')
        print(f"| {name} | {version} | {desc} | {reqs} |")

if __name__ == "__main__":
    # Read JSON from stdin
    skills = json.load(sys.stdin)
    compare_skills(skills)

References

references/registry-urls.md

Known skill registry endpoints:

ClawHub

  • Search: https://clawhub.com/api/skills/search?q=<query>
  • Skill detail: https://clawhub.com/api/skills/<name>
  • Raw SKILL.md: https://raw.githubusercontent.com/<owner>/<repo>/SKILL.md

GitHub

  • Search API: https://api.github.com/search/code?q=SKILL.md+openclaw
  • Raw file: https://raw.githubusercontent.com/<owner>/<repo>/<branch>/SKILL.md

Awesome Lists

  • https://raw.githubusercontent.com/openclaw/awesome-openclaw/main/README.md

references/skill-patterns.md

Common skill patterns to recognize:

Skill Types:

  • Tool wrappers - Provide CLI access to external tools (nmap, sqlmap, etc.)
  • Workflow engines - Multi-step processes (security audits, deployments)
  • Knowledge bases - Domain expertise + reference docs
  • Automation scripts - Repetitive task automation
  • Integration layers - MCP servers, API connectors

Metadata Patterns:

metadata:
  openclaw:
    requires:
      bins: ["tool-name"]  # Required binaries
    install:
      - kind: node  # or brew, apt, pip
        package: package-name

Usage Examples

Example 1: Find and Use Security Skill

User: "Find me a skill for web security scanning"

You:
1. clawhub search "web security" --limit 5
2. Present results
3. User picks "security-audit-toolkit"
4. Fetch SKILL.md, read workflows
5. Follow the skill's security audit process

Example 2: Temporary Skill Usage

User: "Use the coding agent to review my repo, but don't install it"

You:
1. Fetch coding agent SKILL.md from ClawHub
2. Read its code review workflow
3. Execute the workflow steps manually
4. Report findings

Example 3: Batch Discovery

User: "Show me all available skills"

You:
1. clawhub search "" --limit 100
2. Categorize by keywords
3. Present organized list:
   - Security (12 skills)
   - Coding (8 skills)
   - Automation (6 skills)
   - etc.

Best Practices

  1. Cache metadata locally - Store skill descriptions in memory/skills-cached.md to avoid repeated fetches
  2. Respect rate limits - Don't hammer ClawHub/GitHub APIs
  3. Verify skill sources - Only fetch from trusted registries
  4. Clean up temp files - Remove /tmp/remote-skill-* after use
  5. Track skill usage - Log which remote skills work well for future reference

Trigger Examples

When this skill activates:

  • "Find a skill for X"
  • "What skills do Y?"
  • "Use <skill-name> without installing"
  • "Compare skills for X"
  • "Show me available skills"
  • "What does <skill> do?"
  • "Is there a skill for X?"

Remote Skill Engine - Stream skills, don't install them. 🌐⚡

Comments

Loading comments...