# discover_skills_and_roots

> **Function** in `deepagents_code`

📖 [View in docs](https://reference.langchain.com/python/deepagents-code/skills/invocation/discover_skills_and_roots)

Discover skills and build pre-resolved containment roots.

## Signature

```python
discover_skills_and_roots(
    assistant_id: str,
    *,
    plugin_skill_sources: tuple[tuple[Path, str], ...] = (),
    plugin_skill_roots: tuple[Path, ...] = (),
    path_base: Path | None = None,
) -> tuple[list[ExtendedSkillMetadata], list[Path]]
```

## Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `assistant_id` | `str` | Yes | Agent identifier used to resolve user skill directories. |
| `plugin_skill_sources` | `tuple[tuple[Path, str], ...]` | No | Plugin-owned skill directories and namespaces, supplied by the plugin composition layer. (default: `()`) |
| `plugin_skill_roots` | `tuple[Path, ...]` | No | Plugin-owned roots allowed for content loading. (default: `()`) |
| `path_base` | `Path \| None` | No | User working directory for resolving relative skill roots. Defaults to the process working directory. (default: `None`) |

## Returns

`tuple[list[ExtendedSkillMetadata], list[Path]]`

Tuple of `(skill metadata list, pre-resolved containment roots)`.

---

[View source on GitHub](https://github.com/langchain-ai/deepagents/blob/2069079e09546060f5b52b2cd4f0e3c813e820f3/libs/code/deepagents_code/skills/invocation.py#L40)