# PackageManager.load_project_scripts
URL: https://lsd.tools/docs/api-package-manager-load-project-scripts
Updated: 2026-07-17

## Parameters

| name | type | default | description |
|---|---|---|---|
| `project_dir` | `str \| Path` | — | the project folder whose loose `*.py` files hold steps |
| `bus` | `EventBus` | `None` | optional desktop event bus; a file's `register(bus)` is called if present |

## Example

```python
from lsdtools.advanced import PackageManager

pm = PackageManager()
pm.load_project_scripts("~/projects/site-survey")
```

## Notes

The zero-config on-ramp: drop a `steps.py` (or any top-level `*.py`, or files under a `scripts/`
subdir) beside your project and its `@load` / `@shape` / `@deliver` or class-based steps register
automatically — no manifest needed. Dunder/hidden files (`__init__`, `_helpers`) are skipped. Call it
again after an edit to hot-reload: deleted classes are unregistered, edited ones pick up the new code,
new ones appear — the returned `ReloadResult` reports the diff.

## See also

**API:** [reload](/docs/api-package-manager-reload) · [add_local](/docs/api-package-manager-add-local) · [load](/docs/api-package-manager-load)

**Guides:** [Develop a package](/docs/pkg-develop) · [Package anatomy](/docs/pkg-anatomy)
