NEW Browse AI tools across categories — updated daily. See what's new →

Clawhub Skill Lint

Use this skill before publishing any ClawHub skill from this repo, or after editing a SKILL.md, to verify the skill won't be flagged or rejected by ClawHub's server-side moderation pipeline. The sk...

Authorsageox
Version1.0.0
LicenseMIT
Token count~1,532
UpdatedJun 5, 2026

Use this skill before publishing any ClawHub skill from this repo, or after editing a SKILL.md, to verify the skill won't be flagged or rejected by ClawHub's server-side moderation pipeline. The skill re-implements every static-scanner rule from openclaw/clawhub's `convex/lib/moderationEngine.ts` plus the frontmatter spec from `docs/skill-format.md` and runs them locally. Triggers: "lint the claws skills", "check the claws/openclaw skills", "scan before publish", "is the skill clean", "any sc...

Install

Quick install

via npx skills · works with 57+ agents
npx skills add https://github.com/openclaw/clawhub
Or pick agent:
npx skills add openclaw/clawhub --agent claude-code
npx skills add openclaw/clawhub --agent cursor
npx skills add openclaw/clawhub --agent codex
npx skills add openclaw/clawhub --agent opencode
npx skills add openclaw/clawhub --agent github-copilot
npx skills add openclaw/clawhub --agent windsurf
More install options

Shorthand — useful for multi-skill repos:

npx skills add openclaw/clawhub

Manual — clone the repo and drop the folder into your agent's skills directory:

git clone https://github.com/openclaw/clawhub.git
cp -r clawhub ~/.claude/skills/
How to use: Once installed, ask your agent to "use the Clawhub Skill Lint skill" or describe what you want (e.g. "Use this skill before publishing any ClawHub skill from this repo, or after edit"). Requires Node.js 18+.

Clawhub Skill Lint

Use this skill before publishing any ClawHub skill from this repo, or after editing a SKILL.md, to verify the skill won't be flagged or rejected by ClawHub's server-side moderation pipeline. The skill re-implements every static-scanner rule from openclaw/clawhub's convex/lib/moderationEngine.ts plus the frontmatter spec from docs/skill-format.md and runs them locally. Triggers: "lint the claws skills", "check the claws/openclaw skills", "scan before publish", "is the skill clean", "any sc...

---
name: clawhub-skill-lint
description: >
Use this skill before publishing any ClawHub skill from this repo, or after
editing a SKILL.md, to verify the skill won't be flagged or rejected by
ClawHub's server-side moderation pipeline. The skill re-implements every
static-scanner rule from openclaw/clawhub's convex/lib/moderationEngine.ts
plus the frontmatter spec from docs/skill-format.md and runs them locally.
Triggers: "lint the claws skills", "check the claws/openclaw skills",
"scan before publish", "is the skill clean", "any scanner findings",
/clawhub-skill-lint, before any clawhub sync or clawhub skill publish.
---

clawhub-skill-lint

A pre-publish validator for ClawHub skills. Catches publish-time failures
locally — no network round-trip, no clawhub CLI required.

When to use

  • Before running clawhub sync or clawhub skill publish.
  • After editing any SKILL.md, README.md, or other text file in a
ClawHub skill folder, to confirm no new patterns trigger the scanner.
  • In CI as a pre-publish gate.
  • Whenever the user asks "is this skill clean", "will this pass review",
or "scan before I publish".

How to invoke

The skill bundles a Python linter at
.claude/skills/clawhub-skill-lint/scripts/lint.py. Call it with one or
more paths:

# Lint a single skill folder
python3 .claude/skills/clawhub-skill-lint/scripts/lint.py claws/openclaw/sageox

# Lint every skill under a parent directory
python3 .claude/skills/clawhub-skill-lint/scripts/lint.py claws/openclaw

# Multiple paths in one invocation
python3 .claude/skills/clawhub-skill-lint/scripts/lint.py claws/openclaw/sageox claws/openclaw/<other-skill>

# Machine-readable JSON output (for CI)
python3 .claude/skills/clawhub-skill-lint/scripts/lint.py --json claws/openclaw

# Treat warnings as errors
python3 .claude/skills/clawhub-skill-lint/scripts/lint.py --strict claws/openclaw

The linter discovers skill folders by looking for SKILL.md (or skill.md).
A path that contains SKILL.md directly is treated as a single skill;
any other directory is scanned for child folders.

Exit codes:

| Code | Meaning |
|------|---------|
| 0 | Clean (or only info findings; or --strict not set and only warn findings) |
| 1 | At least one critical finding, or --strict and at least one warn |
| 2 | Usage / I/O error (bad path, missing SKILL.md, etc.) |

How to interpret results

Each finding has:

  • rule_id — short stable identifier (e.g. static.malicious_install_prompt,
frontmatter.missing_required_field)
  • severitycritical, warn, or info
  • file — path inside the skill folder (or SKILL.md / metadata for
frontmatter findings)
  • line — 1-indexed line number where the rule first matched
  • message — human-readable explanation
  • evidence — truncated snippet of the matching text

Critical findings will hard-block publish. Examples: malicious install
prompt, frontmatter missing required field, slug regex fail, install kind
not in {brew, node, go, uv}, bundle size > 50 MB.

Warnings are advisory but worth fixing — they signal patterns the
scanner may flag as suspicious (which doesn't block but adds a warning
banner on the skill page). Examples: always: true in frontmatter,
URL shortener references, prompt-injection bait phrases.

Info findings are observations that don't affect publishability.

Workflow when findings are reported

  1. Read each finding out loud to the user, grouped by severity.
  2. For each critical finding:
  • Show the file:line and the offending evidence.
  • Propose a concrete fix (e.g., "rephrase 'for macOS:' to 'macOS:'
to avoid triggering the terminal-instruction precondition" or "add version: 0.1.0 to the frontmatter").
  • Apply the fix only after the user confirms.
  1. Re-run the linter after fixes to confirm clean.
  2. Only proceed to publish when the linter exits 0.

Source-of-truth references

The linter is kept in sync with these upstream files. If ClawHub updates
its rules, update scripts/lint.py to match:

What this linter does NOT cover

  • VirusTotal hash lookup — server-side, runs against a live SHA-256 DB.
Not reproducible locally.
  • VT Code Insight (Gemini LLM scan) — opaque, server-side. The only
way to get the LLM verdict is to publish under a throwaway slug and query /api/v1/skills/<slug>/scan. See claws/openclaw/PUBLISHING.md § "Throwaway-slug pre-flight" for the workflow.
  • Behavioral correctness of the skill — the linter only looks at
patterns. Whether the skill actually does what it says is a separate test (load it into a real OpenClaw via skills.load.extraDirs).

A clean lint result is necessary but not sufficient for a successful
publish. Always also do at least one throwaway-slug publish before
claiming the canonical slug.

---

Source: https://github.com/openclaw/clawhub
Author: sageox
Discovered via: skillsdirectory.com
Genre: ai-agents

SKILL.md source

---
name: Clawhub Skill Lint
description: Use this skill before publishing any ClawHub skill from this repo, or after editing a SKILL.md, to verify the skill won't be flagged or rejected by ClawHub's server-side moderation pipeline. The sk...
---

# Clawhub Skill Lint

Use this skill before publishing any ClawHub skill from this repo, or after editing a SKILL.md, to verify the skill won't be flagged or rejected by ClawHub's server-side moderation pipeline. The skill re-implements every static-scanner rule from openclaw/clawhub's `convex/lib/moderationEngine.ts` plus the frontmatter spec from `docs/skill-format.md` and runs them locally. Triggers: "lint the claws skills", "check the claws/openclaw skills", "scan before publish", "is the skill clean", "any sc...

---
name: clawhub-skill-lint
description: >
  Use this skill before publishing any ClawHub skill from this repo, or after
  editing a SKILL.md, to verify the skill won't be flagged or rejected by
  ClawHub's server-side moderation pipeline. The skill re-implements every
  static-scanner rule from openclaw/clawhub's `convex/lib/moderationEngine.ts`
  plus the frontmatter spec from `docs/skill-format.md` and runs them locally.
  Triggers: "lint the claws skills", "check the claws/openclaw skills",
  "scan before publish", "is the skill clean", "any scanner findings",
  /clawhub-skill-lint, before any `clawhub sync` or `clawhub skill publish`.
---

# clawhub-skill-lint

A pre-publish validator for ClawHub skills. Catches publish-time failures
locally — no network round-trip, no `clawhub` CLI required.

## When to use

- **Before** running `clawhub sync` or `clawhub skill publish`.
- **After** editing any `SKILL.md`, `README.md`, or other text file in a
  ClawHub skill folder, to confirm no new patterns trigger the scanner.
- **In CI** as a pre-publish gate.
- Whenever the user asks "is this skill clean", "will this pass review",
  or "scan before I publish".

## How to invoke

The skill bundles a Python linter at
`.claude/skills/clawhub-skill-lint/scripts/lint.py`. Call it with one or
more paths:

```bash
# Lint a single skill folder
python3 .claude/skills/clawhub-skill-lint/scripts/lint.py claws/openclaw/sageox

# Lint every skill under a parent directory
python3 .claude/skills/clawhub-skill-lint/scripts/lint.py claws/openclaw

# Multiple paths in one invocation
python3 .claude/skills/clawhub-skill-lint/scripts/lint.py claws/openclaw/sageox claws/openclaw/<other-skill>

# Machine-readable JSON output (for CI)
python3 .claude/skills/clawhub-skill-lint/scripts/lint.py --json claws/openclaw

# Treat warnings as errors
python3 .claude/skills/clawhub-skill-lint/scripts/lint.py --strict claws/openclaw
```

The linter discovers skill folders by looking for `SKILL.md` (or `skill.md`).
A path that contains `SKILL.md` directly is treated as a single skill;
any other directory is scanned for child folders.

**Exit codes:**

| Code | Meaning |
|------|---------|
| `0` | Clean (or only `info` findings; or `--strict` not set and only `warn` findings) |
| `1` | At least one `critical` finding, or `--strict` and at least one `warn` |
| `2` | Usage / I/O error (bad path, missing `SKILL.md`, etc.) |

## How to interpret results

Each finding has:

- **rule_id** — short stable identifier (e.g. `static.malicious_install_prompt`,
  `frontmatter.missing_required_field`)
- **severity** — `critical`, `warn`, or `info`
- **file** — path inside the skill folder (or `SKILL.md` / `metadata` for
  frontmatter findings)
- **line** — 1-indexed line number where the rule first matched
- **message** — human-readable explanation
- **evidence** — truncated snippet of the matching text

**Critical findings will hard-block publish.** Examples: malicious install
prompt, frontmatter missing required field, slug regex fail, install kind
not in {`brew`, `node`, `go`, `uv`}, bundle size > 50 MB.

**Warnings are advisory** but worth fixing — they signal patterns the
scanner may flag as `suspicious` (which doesn't block but adds a warning
banner on the skill page). Examples: `always: true` in frontmatter,
URL shortener references, prompt-injection bait phrases.

**Info findings** are observations that don't affect publishability.

## Workflow when findings are reported

1. **Read each finding** out loud to the user, grouped by severity.
2. **For each critical finding:**
   - Show the file:line and the offending evidence.
   - Propose a concrete fix (e.g., "rephrase 'for macOS:' to '**macOS:**'
     to avoid triggering the terminal-instruction precondition" or
     "add `version: 0.1.0` to the frontmatter").
   - Apply the fix only after the user confirms.
3. **Re-run the linter** after fixes to confirm clean.
4. **Only proceed to publish** when the linter exits 0.

## Source-of-truth references

The linter is kept in sync with these upstream files. If ClawHub updates
its rules, update `scripts/lint.py` to match:

- [openclaw/clawhub `docs/skill-format.md`](https://github.com/openclaw/clawhub/blob/main/docs/skill-format.md) — frontmatter schema, slug regex, bundle limits, install kinds
- [openclaw/clawhub `convex/lib/moderationEngine.ts`](https://github.com/openclaw/clawhub/blob/main/convex/lib/moderationEngine.ts) — static scanner rules (the canonical source of truth for `hasMaliciousInstallPrompt` and friends)
- [openclaw/clawhub `docs/security.md`](https://github.com/openclaw/clawhub/blob/main/docs/security.md) — moderation pipeline overview

## What this linter does NOT cover

- **VirusTotal hash lookup** — server-side, runs against a live SHA-256 DB.
  Not reproducible locally.
- **VT Code Insight (Gemini LLM scan)** — opaque, server-side. The only
  way to get the LLM verdict is to publish under a throwaway slug and
  query `/api/v1/skills/<slug>/scan`. See `claws/openclaw/PUBLISHING.md`
  § "Throwaway-slug pre-flight" for the workflow.
- **Behavioral correctness of the skill** — the linter only looks at
  patterns. Whether the skill *actually does what it says* is a separate
  test (load it into a real OpenClaw via `skills.load.extraDirs`).

A clean lint result is necessary but not sufficient for a successful
publish. Always also do at least one throwaway-slug publish before
claiming the canonical slug.


---

**Source**: https://github.com/openclaw/clawhub
**Author**: sageox
**Discovered via**: skillsdirectory.com
**Genre**: ai-agents

Related skills 6

running-claude-code-via-litellm-copilot

★ Featured

Use when routing Claude Code through a local LiteLLM proxy to GitHub Copilot, reducing direct Anthropic spend, configuring ANTHROPIC_BASE_URL or ANTHROPIC_MODEL overrides, or troubleshooting Copilot proxy setup failures such as model-not-found, no localhost traffic, or GitHub 401/403 auth errors.

xixu-me 155k
AI & ML

skills-cli

★ Featured

Use when users ask to discover, install, list, check, update, remove, back up, restore, sync, or initialize Agent Skills, mention `bunx skills`, `npx skills`, `skills.sh`, or `skills-lock.json`, ask "find a skill for X", or want help extending agent capabilities with installable skills.

xixu-me 155k
AI & ML

repo-intake-and-plan

★ Featured

Narrow RigorPilot helper for README-first deep learning repo reproduction. Use when the task is specifically to scan a repository, read the README and common project files, extract documented commands, classify inference, evaluation, and training candidates, and return the smallest trustworthy reproduction plan to the main orchestrator. Do not use for environment setup, asset download, command execution, final reporting, paper lookup, or end-to-end orchestration.

lllllllama 127k
AI & ML

image-to-video

★ Featured

Animate any still image on RunComfy — this skill is a smart router that matches the user's intent to the right i2v model in the RunComfy catalog. Picks HappyHorse 1.0 I2V (Arena #1, native audio, identity preservation) for general animations, Wan 2.7 with `audio_url` for custom-voiceover lip-sync, or Seedance 2.0 Pro for multi-modal animation from image + reference video + reference audio. Bundles each model's documented prompting patterns so the caller gets sharper output without burning ite...

agentspace-so 121k
AI & ML

video-edit

★ Featured

Edit existing video on RunComfy — this skill is a smart router that matches the user's intent to the right edit model in the RunComfy catalog. Picks Wan 2.7 Edit-Video (general restyle / background swap / packaging swap, identity + motion preservation), Kling 2.6 Pro Motion Control (transfer precise motion from a reference video to a target character), or Lucy Edit Restyle (lightweight identity-stable restyle / outfit swap). Bundles each model's documented prompting patterns so the skill gets...

agentspace-so 121k
AI & ML

nano-banana-2

★ Featured

Generate images with Google Nano Banana 2 (Gemini-family flash-tier text-to-image) on RunComfy — bundled with the model's documented prompting patterns so the skill gets sharper output than naive prompting against the same model. Documents Nano Banana 2's strengths (rapid iteration, in-image typography rendering, predictable framing, optional web-grounded context), the resolution-tier pricing, the safety-tolerance dial, and when to route to Nano Banana Pro / GPT Image 2 / Flux 2 / Seedream in...

agentspace-so 121k
AI & ML