← ClaudeAtlas

clawhub-skill-lintlisted

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`.
sageox/ox · ★ 37 · Code & Development · score 78
Install: claude install-skill sageox/ox
# 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:** | Cod