SuperAPI AI Directory

lint

Coding & development

View repository

Updated 10-16 03:04

About this skill

If the user's intent does not match this skill, route through /plugin-creator:plugin-lifecycle.

<provided_path> $ARGUMENTS </provided_path>

Run uvx skilllint@latest check <path> via Bash, using the exact literal path in <provided_path/>. Never splice <provided_path/> directly into a !`...` injection line or any other shell-interpreted string — it is caller-supplied text and may contain characters (;, `, $(), |) that corrupt shell parsing on contact.

Read the findings straight from the command output. Each one carries its error code, severity, the field or path it applies to, and the suggested fix. Report those to the user and act on them; do not look up a code anywhere else. Re-run with --fix to apply the auto-fixable ones.

Runtime escapes

When <provided_path/> is a plugin directory, also run:

uv run "${CLAUDE_PLUGIN_ROOT}/skills/lint/scripts/audit_runtime_escapes.py" --plugin-dir <path>

It reports every path, markdown link, and cross-plugin reference in the plugin's runtime files that resolves only in the authoring repo, with file:line for each. Exit 0 means clean; exit 1 means findings. Pass --all instead of --plugin-dir to sweep every plugin and get one count each.

A finding is real when the text tells the runtime agent to act on something an installed consumer does not have. Fenced blocks are exempt, because an anti-pattern shown in a fence is an illustration rather than an instruction; angle-bracket placeholders are exempt for the same reason. Move an illustrative real path into a fence, and write a generic one as <plugin>/skills/<name>/SKILL.md.

The test behind each finding: a path, command, fact, or cross-plugin reference is present in every environment, bundled and reached by a relative path inside the plugin, or inlined; otherwise inline, bundle, guard, or delete it. A harness variable counts only where that harness substitutes it. The scanner never reports a path built on ${CLAUDE_PLUGIN_ROOT} or ${CLAUDE_SKILL_DIR}, so check those by hand against the same test.