Skill flagged — suspicious patterns detected

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

Outclaw Setup

v1.0.6

OutClaw setup: plugin inventory, connect outreach channels (Leadbay/LeadClaw, Gmail, Calendar, Slack, LinkedIn, WhatsApp, Calendly), capture the user's profi...

0· 103·1 current·1 all-time

Install

OpenClaw Prompt Flow

Install with OpenClaw

Best for remote or guided setup. Copy the exact prompt, then paste it into OpenClaw for milstan/outclaw-setup.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "Outclaw Setup" (milstan/outclaw-setup) from ClawHub.
Skill page: https://clawhub.ai/milstan/outclaw-setup
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 outclaw-setup

ClawHub CLI

Package manager switcher

npx clawhub@latest install outclaw-setup
Security Scan
Capability signals
Requires OAuth tokenRequires sensitive credentials
These labels describe what authority the skill may exercise. They are separate from suspicious or malicious moderation verdicts.
VirusTotalVirusTotal
Pending
View report →
OpenClawOpenClaw
Suspicious
medium confidence
!
Purpose & Capability
The skill's stated purpose (set up outreach channels, capture user/org profile, learn style) matches many of the actions in SKILL.md, but the manifest declares no required env vars, binaries, or config paths while the runtime instructions require access to local scripts, ~/.openclaw paths, and the ability to install/execute third‑party plugins. That mismatch (declaring nothing while expecting broad local access and installs) is incoherent and worth caution.
!
Instruction Scope
SKILL.md explicitly instructs the agent to run many shell commands (python scripts, openclaw/gog/linkedin-cli installs and auth flows), read and write files under ~/.openclaw/outclaw/kb/ and memory/<tenant>/memory.jsonl, fetch websites (curl/web_fetch), and log to memory. These are legitimate for a setup wizard, but they go beyond a simple read-only assistant: the agent is told to perform installs and to modify persistent local state and memory. The skill also asks the agent to collect credentials and OAuth callback URLs at runtime (not declared in metadata).
!
Install Mechanism
There is no install spec (instruction-only), which is low-risk in isolation, but the instructions tell the agent to run 'openclaw plugins install …' and to side-load third‑party MCPs/plugins (e.g., linkedin-cli, Calendly MCP UUIDs). Those operations will download and install external code at runtime from unspecified sources. The absence of a declared install mechanism or provenance for those plugins makes this an elevated risk — the agent will be executing remote code without an explicit, auditable install declaration in the package metadata.
!
Credentials
The registry lists no required env vars or primary credential, yet the instructions explicitly expect to obtain OAuth tokens, API keys, and account credentials for Gmail (gog), Leadbay/LeadClaw, LinkedIn, Slack, WhatsApp, Calendly, etc. Requesting multiple unrelated credentials at runtime without declaring them in metadata is a proportionality mismatch and reduces transparency about what secrets the skill will access or prompt for.
Persistence & Privilege
always:false (good). The skill will write persistent data (KB pages under ~/.openclaw/outclaw/kb/, memory entries, setup_state JSON) as part of normal operation. Autonomous execution is allowed by platform default; combined with the ability to install plugins and modify local memory, this increases the blast radius if a plugin or command is malicious. This is expected for a setup wizard but worth noting.
What to consider before installing
Plain-language checklist before you install or run this skill: - Understand the mismatch: the skill metadata declares no required env/config/install, but the runtime instructions will run shell commands, install third‑party plugins, and write to ~/.openclaw and memory files. That means the agent will perform real system actions and fetch code at runtime. - Review the source: inspect the actual scripts referenced (shared/scripts/kb_ingest.py, kb_page.py, memory_log.sh, inventory.py, etc.) and the listed plugin sources (e.g., arun-8687/linkedin-cli) so you know what will be installed and executed. Prefer installing only from auditable repos/releases. - Limit credentials: only connect accounts you control and are comfortable granting access. Prefer OAuth flows where you review scopes. Never paste sensitive callback URLs or long-lived secrets into untrusted chat channels. - Prefer manual review/run: if you want to be cautious, ask the agent to print the exact commands it would run instead of executing them, then run them yourself in a controlled environment (or sandbox/VM). - Backup state: snapshot ~/.openclaw and any memory files before running the wizard so you can recover if something is written incorrectly. - Ask the vendor for clarity: request that the skill declare required env vars, config paths, and an explicit install provenance for any plugins it will fetch. If they can't supply auditable install sources, treat the installs as higher risk. - Consider isolation: run initial setup in an isolated or disposable environment if you intend to test plugin installs. If you want, I can extract every command the SKILL.md would run and produce a checklist of exact scripts and external endpoints to inspect before you proceed.

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

Runtime requirements

🧰 Clawdis
latestvk9709q5d23rbjmy0fm061qhc6s85e1b4
103downloads
0stars
7versions
Updated 4d ago
v1.0.6
MIT-0

OutClaw — Setup

You set up the foundation every other outclaw skill depends on: a correct plugin inventory, connected outreach channels, the user's own profile in the KB, and a per-channel writing-style prompt.

Resolver mandate (non-negotiable)

Before creating or modifying any page under ~/.openclaw/outclaw/kb/ or any entry in memory/<tenant>/memory.jsonl, read shared/references/RESOLVER.md and file by primary subject, not by source format or skill name. Use shared/scripts/kb_ingest.py + kb_page.py + memory_log.sh — do not hand-craft file paths. Setup state goes in setup_state/<tenant>.json, NOT in kb/.

Preamble (skip if called from outclaw orchestrator)

SHARED="$(dirname "$(dirname "$(cd "$(dirname "$0")" && pwd)")")/shared"
bash "$SHARED/scripts/memory_search.sh" --limit 30

Flow

Step 0 — Inventory

Always run this first, every time setup is triggered. It's cheap and keeps the tool_inventory memory entry fresh.

python3 "$SHARED/scripts/inventory.py" --log

Show the printed table to the user. Identify which outreach channels are ready, which are needs_setup, and which are missing. Proceed only with what's missing or unconfigured. See references/inventory-check.md for the full interpretation rules (skip-over logic, needs-reauth, etc.).

Step 1 — Welcome & Leadbay pitch

Follow references/plugin-connect.md §"Step 1: Welcome" through §"Step 5: Additional channels". That doc owns the exact wording + OAuth flows. Key conventions:

  • Transport-aware OAuth: send clickable link for remote users, never assume a browser.
  • Execute openclaw plugins install … and gog auth add … yourself. Don't print bash for the user to copy.
  • Each successfully connected plugin → memory_log.sh a plugin_setup entry (key=<plugin>, insight=<status> at <date>, source=observed, confidence=10).

Step 2 — User profile + on-brand company KB (NEW — website-sourced)

This step is the ground-truth the research + planning skills rely on. Without it, drafts fabricate value propositions. The pre-draft gate in outclaw-plan (org_readiness.py) REQUIRES this step to complete.

2a. Self profile (2 min). Interview the user for kb/me/self.md: name, current role, current company, LinkedIn URL, location, a 2-sentence "what I'm working on", public interests/topics.

2b. Acquire the company website FIRST. Ask:

"What's your company's website? I'll pull your real positioning copy so drafts quote your actual voice — not invented value props."

  • If user gives a URL → continue to 2c.
  • If user refuses or has no website → ask them to paste their one-liner, product list, value props verbatim. Fall back to --strict=false mode (org_readiness still checks sections, but skips placeholder scans since short copy may read like placeholders).
  • If user says "I don't know" / unclear — do NOT guess a URL; stop and re-ask once, then fall back to paste-in mode.

2c. web_fetch the website into raw/. For the URL U:

SHARED=~/.openclaw/skills/outclaw/shared/scripts
TS=$(date -u +%Y%m%dT%H%M%SZ)
SLUG=$(python3 -c "import sys,re; u=sys.argv[1]; print(re.sub(r'[^a-z0-9]+','-',u.lower().split('://',1)[-1].split('/',1)[0]).strip('-'))" "$U")

# Use web_fetch MCP tool OR curl (prefer web_fetch if available)
# Persist root page + any /about, /product, /solutions, /pricing, /customers
# the agent can surface from the homepage's nav:
for p in "" /about /company /product /products /solutions /pricing /customers /case-studies; do
  out=~/.openclaw/outclaw/kb/raw/${SLUG}-website${p//\//-}-$TS.md
  # agent: use web_fetch tool here — it beats curl for JS-rendered content.
  # If web_fetch isn't in your tool list, use: curl -sL "$U$p" > "$out"
  echo "[fetch] $U$p -> $out"
done

Save every fetched body as raw/<slug>-website-<path>-<ts>.md. These are the ONLY source drafts may quote for company-side claims.

2d. Build kb/me/org.md from the fetched copy. Read the raw/ files and populate each required section with LITERAL phrases from the website (never paraphrase — the draft_checker.py will grep-verify):

# <Company>

## One-liner
<copy the hero-tagline line from the homepage>

## Company website
<https://...>

## Products / Services
- <copy each product name + its 1-line description as it appears on the site>

## Value propositions
- <verbatim value-prop line from the homepage hero or /product>
- <verbatim differentiator call-out from /solutions>
- <verbatim third line — at minimum 3 lines here>

## Differentiators
- <the "why us vs competitors" lines, if the site makes them>

## Case studies
<only if the site names real customers publicly; otherwise OMIT this
 section entirely — do NOT invent "we helped Acme Inc">

If LeadClaw is ready: you may pre-fill from the Leadbay taste profile as a starting draft, then overwrite with website-sourced copy. Leadbay profile is a hint, website is truth.

Write via:

python3 "$SHARED/scripts/kb_page.py" upsert me self --body /tmp/me-self.md
python3 "$SHARED/scripts/kb_page.py" upsert me org  --body /tmp/me-org.md
python3 "$SHARED/scripts/kb_index_rebuild.py"
python3 "$SHARED/scripts/kb_ingest.py" log ingest "user profile + website-sourced org.md captured" --pages me/self.md me/org.md

# Readiness gate — do not mark Step 2 complete until this passes:
python3 "$SHARED/scripts/org_readiness.py" || { echo "org.md still not ready; return to 2c/2d"; exit 1; }

Step 3 — Style learning (delegated to outclaw-style)

Invoke the outclaw-style skill at ~/.openclaw/skills/outclaw/skills/outclaw-style/SKILL.md. It:

  • Trains one style prompt per ready outreach channel
  • Writes to ~/.openclaw/outclaw/styles/<tenant>/<channel>_style.md
  • Logs type=user, key=style_trained_<channel> memory entries so outclaw-plan can find them quickly

If the user opted out of sample scraping, log a preference memory entry and skip style learning — outclaw-plan falls back to a neutral template.

Step 4 — Verification

Show the final dashboard:

Plugin        Status        Test
──────────────────────────────────────────
Leadbay       ✓ Ready       42 leads loaded / ICP profile active
Gmail         ✓ Ready       Draft sent
Slack         ✓ Ready       Msg sent
LinkedIn      ✗ Skipped     —

KB me/self.md ✓    KB me/org.md ✓
Style: email ✓ (score 82)   Style: linkedin ✗ (not trained)

Ready to go. Say 'research <person>' or 'plan outreach to <person>' when
you have a target.

Persist setup_state.json:

{
  "wizard_completed": true,
  "completed_at": "<ISO>",
  "leadbay_connected": true,
  "channels": {
    "email":    {"provider": "gmail", "status": "connected", "verified_at": "<ISO>"},
    "calendar": {"provider": "gcal",  "status": "connected", "verified_at": "<ISO>"},
    "slack":    {"status": "connected", "verified_at": "<ISO>"},
    "whatsapp": {"status": "skipped"},
    "linkedin": {"status": "skipped"}
  },
  "kb_me_self": true,
  "kb_me_org": true,
  "styles_trained": ["email", "slack"]
}

Completion rule

Setup is complete when:

  • tool_inventory memory entry exists + is <24h old
  • At least one outreach channel is ready (email / LinkedIn / Slack / WhatsApp)
  • kb/me/self.md and kb/me/org.md both exist and are non-stub
  • At least one styles/<channel>_style.md exists

Anything less and the orchestrator should re-route to setup on the next turn.

Re-run behaviour

Re-runs use the same Step 0 inventory — no separate "re-run" flow. Already- ready plugins are skipped. "connect linkedin" triggers this skill but jumps straight to Step 1 for that one plugin.

Adding more tools later

When the user says "add more tools", "I want to add Twitter", "connect Instagram", "reconfigure tools", this skill re-enters at Step 0. The inventory reveals what's already connected and the wizard offers ONLY the missing tools. For each missing tool, see shared/scripts/plugin_categories.json → user_installable for the install command. Examples catalog:

PluginInstall
Gmail / Outlook / IMAPmarlinjai/email-mcp
Google Calendarnspady/google-calendar-mcp
Twitter / Xnirholas/XActions
Blueskybrianellin/bsky-mcp-server
Instagrammcpware/instagram-mcp
WhatsAppjlucaso1/whatsapp-mcp-ts
Telegramchigwell/telegram-mcp
Slackkorotovsky/slack-mcp-server
DiscordSaseQ/discord-mcp
RedditArindam200/reddit-mcp
iMessage / SMS (macOS)carterlasalle/mac_messages_mcp
Facebook PagesHagaiHen/facebook-mcp-server
Mastodonbuild on API
Signalbuild on AsamK/signal-cli

When the user adds a new tool, also:

  1. Run python3 shared/scripts/capabilities.py --refresh so the capability map reflects the new channel.
  2. If the new tool enables a previously-untrained channel, invoke outclaw-style to learn the style for that channel.

Leadbay cron offer

When LeadClaw is just installed and confirmed, offer the user a daily prospecting-hygiene cron (the "Leadbay rhythm"):

"Want me to set up a daily (or weekly) prospecting run? Each run would pull your fresh Leadbay batch, qualify the top picks, enrich contacts for the most promising, and prepare one-by-one outreach plans for your validation. You'll see the final results in the morning — no babysitting."

If accepted, use OpenClaw's cron skill to schedule:

# Daily at 7:00 local time (or Monday 7:00 if weekly):
openclaw cron add "outclaw-leadbay-daily" \
  --schedule "0 7 * * *" \
  --agent-id <tenant> \
  --prompt "Run outclaw-plan's Leadbay rhythm: leadbay_account_status; leadbay_pull_leads; leadbay_bulk_qualify_leads on top-10; for each of the top 3 AI-qualified leads, call outclaw-research; then outclaw-plan to produce a ready-for-validation plan. Do NOT contact anyone. Queue for user review in the morning."

Log a preference memory entry: {type:"preference", key:"leadbay_rhythm", insight:"daily 7:00 local prospecting run configured","confidence":10, "source":"user-stated"}.

The morning review UX is owned by outclaw-plan §Dashboard which shows every ready-for-validation plan stacked.

Comments

Loading comments...