From skill-linting
Miscellaneous guidelines for skill linting that don't fit into other categories.
How this skill is triggered — by the user, by Claude, or both
Slash command
/skill-linting:skill-linting-miscThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Try to enforce doctests as much as possible, especially in MCPs where the docstrings become context for the agent.
Try to enforce doctests as much as possible, especially in MCPs where the docstrings become context for the agent.
MCPs should not return raw data structures that require the agent to inspect the output before it knows what it will be. They should return simple strings or structs that can be easily converted to a complete JSON schema and shown to the agent via get_schema.
Skills must not hardcode paths outside their own directory. External files are exposed to the skill via symlinks in skills/{skill}/assets/:
skills/scan/assets/portals.yml -> ../../../personal/portals.yml
skills/scan/assets/search.yml -> ../../../personal/search.yml
Use symlinks from an external file to a file in the skill if a file is needed in more than one skill.
Executable scripts live in skills/{skill}/scripts/. They must be self-contained, runnable directly, and accept all external paths as CLI options with sensible defaults.
Standalone scripts use uv inline script metadata so they run with no manual venv:
#!/usr/bin/env -S uv run --script
# /// script
# requires-python = ">=3.11"
# dependencies = ["pydantic>=2", "pyyaml>=6", "typer>=0.12"]
# ///
We do this so skills can be exported from the repo as self-contained units with no external setup.
ALSO add the dependencies to the root pyproject.toml if it exists so they are available in the venv for linting.
For JS bins we recommend either:
.cjs extension without any libraries.deno run with no manual setup.Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub ryanpeach/skills --plugin skill-linting