Import not found python
Skill viditkbhatnagar/immunize/src/immunize/patterns/import-not-found-python
Use when writing Python imports to verify the module and symbol exist at the claimed path before committing the line.From its SKILL.md
npx -y skills add viditkbhatnagar/immunize --skill import-not-found-pythonAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
- runs commandsInstructs the agent to run 1 command, including `pip show <module>`.
SKILL.md
1.9 KB, 415 tokens by cl100k_base, as published. Nobody here has run it
import-not-found-python
Before writing from X import Y, verify the module exists at that
exact path and the symbol is exported. When AI drafts Python code
from memory, it often invents plausible-sounding module names or
guesses wrong sub-paths, and the first call explodes:
ModuleNotFoundError: No module named '_ghost_utils'
ImportError: cannot import name 'slugify' from 'myapp.utils'
Example
Wrong — module does not exist; lazy-imported inside a helper:
def make_slug(title: str) -> str:
from _ghost_utils import slugify
return slugify(title)
Right — use a real import. Stdlib often suffices:
import re
def make_slug(title: str) -> str:
return re.sub(r"[^a-z0-9]+", "-", title.lower()).strip("-")
How to verify before committing
- Check the module if it is third-party:
pip show <module>. - Check the symbol is exported: read the module's
__init__.pyor__all__, or grep the source fordef <symbol>. - Prefer explicit package paths (
from myapp.utils.text import slugify) over guessable short names (from utils import slugify) — shorter paths collide across projects and invite hallucination. - If the symbol is genuinely internal, re-export it deliberately
through
__init__.pyrather than reaching into implementation modules.
Don't paper over with try/except
try:
from _ghost_utils import slugify
except ImportError:
slugify = lambda s: s # silent fallback — hides the typo forever
A silent fallback turns a crash at startup into a broken behavior at
runtime. If the dependency is genuinely optional, raise a clear
ConfigError naming what to install; never fall back to a stub that
looks like success.
What ships with it: 5 files
4.9 KB alongside SKILL.md, 3 of them executable
- cursor_rule.mdc1.9 KB
- pattern.yaml1.0 KB
- test_template.pyruns1.3 KB