Skill Portability Checker

SkillDev tools

Validates that a skill's companion scripts declare their OS and binary dependencies correctly, and checks whether those dependencies are actually present on the current machine.

Instructions available. Your AI can read the instructions. Execution depends on the setup they require.

Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.

Then ask your AI: use the Skill Portability Checker skill

What this skill tells your AI

The instructions your AI receives, as published by archieindian/openclaw-superpowers in skills/core/skill-portability-checker/SKILL.md and read by ahel’s review.

What it does

Skills with companion scripts (.py, .sh) can silently fail on machines where their dependencies aren't installed. A skill written on macOS may call brew, pbcopy, or use /usr/local/bin paths that don't exist on Linux. A Python script may import pandas on a system without it.

Skill Portability Checker:

  1. Scans companion scripts for OS-specific patterns and external binary calls
  2. Checks whether those binaries are present on the current system (PATH lookup + which)
  3. Cross-checks against the skill's declared os_filter: frontmatter field (if any)
  4. Reports portability issues before the skill fails at runtime

Frontmatter field checked

---
name: my-skill
os_filter: [macos]   # optional: ["macos", "linux", "windows"]
---

If os_filter: is absent the skill is treated as cross-platform. The checker then warns if OS-specific calls are detected without a corresponding os_filter:.

Checks performed

CheckDescription
OS_SPECIFIC_CALLScript calls macOS/Linux/Windows-only binary without os_filter:
MISSING_BINARYRequired binary not found on current system PATH
BREW_ONLYScript uses brew (macOS-only) but os_filter: includes non-macOS
PYTHON_IMPORTScript imports a non-stdlib module; checks if importable
HARDCODED_PATHAbsolute path that doesn't exist on this machine (/usr/local, C:\)

How to use

python3 check.py --check                   # Full portability scan
python3 check.py --check --skill my-skill  # Single skill
python3 check.py --fix-hints my-skill      # Print fix suggestions
python3 check.py --format json

Procedure

Step 1 — Run the scan

python3 check.py --check

Step 2 — Triage FAILs first

  • MISSING_BINARY: The script calls a binary that isn't installed. Either install it or add a graceful fallback in the script.
  • OS_SPECIFIC_CALL without os_filter: Add os_filter: [macos] (or whichever OS applies) to the frontmatter so users on other platforms know the skill won't work.

Step 3 — Review WARNs

  • PYTHON_IMPORT: Install the missing module or add a try/except ImportError with a graceful degradation path (like HAS_MODULE = False).
  • HARDCODED_PATH: Replace with Path.home() or environment-variable-based paths.

Step 4 — Add os_filter when needed

If a skill genuinely only works on one OS, declare it:

os_filter: [macos]

This prevents the skill from being shown as broken on other platforms — it simply won't be loaded there.

Output example

Skill Portability Report — linux (Python 3.11)
────────────────────────────────────────────────
32 skills checked | 1 FAIL | 2 WARN

FAIL  obsidian-sync: MISSING_BINARY
      sync.py calls `osascript` — not found on this system
      Fix: add os_filter: [macos] to frontmatter (osascript is macOS-only)

WARN  morning-briefing: PYTHON_IMPORT
      run.py imports `pync` — not importable on this system
      Fix: wrap in try/except ImportError and degrade gracefully

Signals

GitHub stars
72
Forks
14
Last commit
May 2026

ahel review

  • K6low
    bundled executables the agent is told to run
  • K1binfo
    installs-packages (in check.py)

Automated review, not a security audit. Ruleset v1+k2.

Advanced
Item type
skill
Key
skill-portability-checker
Source
github.com/archieindian/openclaw-superpowers