neurocore.skills.loader

Skill discovery — directory scan + entry points.

Two discovery mechanisms, merged into a unified SkillRegistry:

  1. Directory scan — walks a skills/ directory, imports .py files, finds Skill subclasses.

  2. Entry points — scans the neurocore.skills group from installed packages (pyproject.toml [project.entry-points.”neurocore.skills”]).

Entry points take precedence — a pip-installed skill wins over a local copy with the same name.

Usage:

from neurocore.skills.loader import discover_skills from neurocore.config import load_config

config = load_config() registry = discover_skills(config) print(registry.list_skills())

Attributes

Functions

discover_directory(...)

Discover skills by scanning a directory for .py files.

discover_entry_points(...)

Discover skills from installed package entry points.

discover_skills(→ neurocore.skills.registry.SkillRegistry)

Discover all skills — directory scan + entry points.

Module Contents

neurocore.skills.loader.ENTRY_POINT_GROUP = 'neurocore.skills'
neurocore.skills.loader.discover_directory(skills_dir: pathlib.Path, *, registry: neurocore.skills.registry.SkillRegistry | None = None) neurocore.skills.registry.SkillRegistry[source]

Discover skills by scanning a directory for .py files.

Walks the directory (non-recursive by default), imports each .py file as a module, and finds all Skill subclasses with valid skill_meta.

Parameters:
  • skills_dir – Path to the skills directory.

  • registry – Existing registry to add to. Creates a new one if None.

Returns:

SkillRegistry with discovered skills.

Raises:

SkillError – If a skill file cannot be imported (logged, not fatal).

neurocore.skills.loader.discover_entry_points(*, registry: neurocore.skills.registry.SkillRegistry | None = None) neurocore.skills.registry.SkillRegistry[source]

Discover skills from installed package entry points.

Scans the neurocore.skills entry point group. Each entry point should point to a Skill subclass.

Entry point format in pyproject.toml:

[project.entry-points.”neurocore.skills”] neuroweave = “neurocore_skill_neuroweave:NeuroWeaveSkill”

Parameters:

registry – Existing registry to add to. Creates a new one if None.

Returns:

SkillRegistry with discovered skills.

neurocore.skills.loader.discover_skills(config: neurocore.config.schema.NeuroCoreConfig, *, registry: neurocore.skills.registry.SkillRegistry | None = None) neurocore.skills.registry.SkillRegistry[source]

Discover all skills — directory scan + entry points.

Discovery order: 1. Directory scan (skills/ folder) — baseline 2. Entry points (pip-installed packages) — override duplicates

This means entry-point skills take precedence over local skills with the same name.

Parameters:
  • config – NeuroCoreConfig with skills_dir path.

  • registry – Existing registry to add to. Creates a new one if None.

Returns:

SkillRegistry with all discovered skills.