# Immunize Import Not Found Python

> Use when writing Python imports to verify the module and symbol exist at the claimed path before committing the line.

- **Type:** Skill
- **Install:** `agentstack add skill-viditkbhatnagar-immunize-import-not-found-python`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [viditkbhatnagar](https://agentstack.voostack.com/s/viditkbhatnagar)
- **Installs:** 0
- **Category:** [AI & ML](https://agentstack.voostack.com/c/ai-and-ml)
- **Latest version:** 0.1.0
- **License:** Apache-2.0
- **Upstream author:** [viditkbhatnagar](https://github.com/viditkbhatnagar)
- **Source:** https://github.com/viditkbhatnagar/immunize/tree/main/src/immunize/patterns/import-not-found-python
- **Website:** https://pypi.org/project/immunize/

## Install

```sh
agentstack add skill-viditkbhatnagar-immunize-import-not-found-python
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# 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:

```python
def make_slug(title: str) -> str:
    from _ghost_utils import slugify
    return slugify(title)
```

Right — use a real import. Stdlib often suffices:

```python
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 `.
- Check the symbol is exported: read the module's `__init__.py` or
  `__all__`, or grep the source for `def `.
- 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__.py` rather than reaching into implementation
  modules.

## Don't paper over with try/except

```python
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.

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [viditkbhatnagar](https://github.com/viditkbhatnagar)
- **Source:** [viditkbhatnagar/immunize](https://github.com/viditkbhatnagar/immunize)
- **License:** Apache-2.0
- **Homepage:** https://pypi.org/project/immunize/

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-viditkbhatnagar-immunize-import-not-found-python
- Seller: https://agentstack.voostack.com/s/viditkbhatnagar
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
