> ## Documentation Index
> Fetch the complete documentation index at: https://praison.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Skill Manager • AI Agent SDK

> SkillManager: Manager for discovering, loading, and using Agent Skills.

# SkillManager

> Defined in the [**manager**](../modules/manager) module.

<Badge color="blue">AI Agent</Badge>

Manager for discovering, loading, and using Agent Skills.

This is the main entry point for Agent Skills integration.
Supports progressive disclosure and zero performance impact
when skills are not used.

## Constructor

<ParamField query="enforcement_level" type="Optional[EnforcementLevel]" required={false}>
  No description available.
</ParamField>

<ParamField query="write_approval" type="Optional[bool]" required={false}>
  No description available.
</ParamField>

## Methods

<CardGroup cols={2}>
  <Card title="skills()" icon="function" href="../functions/SkillManager-skills">
    Get all loaded skills.
  </Card>

  <Card title="skill_names()" icon="function" href="../functions/SkillManager-skill_names">
    Get names of all loaded skills.
  </Card>

  <Card title="discover()" icon="function" href="../functions/SkillManager-discover">
    Discover skills from directories.
  </Card>

  <Card title="reload()" icon="function" href="../functions/SkillManager-reload">
    Re-scan skill sources and refresh the in-memory index.
  </Card>

  <Card title="bundles()" icon="function" href="../functions/SkillManager-bundles">
    Get all registered bundle manifests.
  </Card>

  <Card title="bundle_names()" icon="function" href="../functions/SkillManager-bundle_names">
    Get names of all registered bundles.
  </Card>

  <Card title="add_bundle()" icon="function" href="../functions/SkillManager-add_bundle">
    Register a bundle manifest.
  </Card>

  <Card title="get_bundle()" icon="function" href="../functions/SkillManager-get_bundle">
    Get a bundle manifest by name (`@` marker optional).
  </Card>

  <Card title="discover_bundles()" icon="function" href="../functions/SkillManager-discover_bundles">
    Discover bundle manifests from directories.
  </Card>

  <Card title="resolve()" icon="function" href="../functions/SkillManager-resolve">
    Expand `@bundle` selectors into member skill names.
  </Card>

  <Card title="get_bundle_instructions()" icon="function" href="../functions/SkillManager-get_bundle_instructions">
    Return bundle-level instructions for selected bundles, in order.
  </Card>

  <Card title="add_skill()" icon="function" href="../functions/SkillManager-add_skill">
    Add a single skill from a directory path.
  </Card>

  <Card title="add_skill_by_name()" icon="function" href="../functions/SkillManager-add_skill_by_name">
    Add a single skill resolved by *name* (not path).
  </Card>

  <Card title="get_skill()" icon="function" href="../functions/SkillManager-get_skill">
    Get a skill by name.
  </Card>

  <Card title="activate()" icon="function" href="../functions/SkillManager-activate">
    Activate a skill (load its instructions).
  </Card>

  <Card title="activate_by_name()" icon="function" href="../functions/SkillManager-activate_by_name">
    Activate a skill by name.
  </Card>

  <Card title="get_available_skills()" icon="function" href="../functions/SkillManager-get_available_skills">
    Get metadata for all available skills.
  </Card>

  <Card title="get_user_invocable_skills()" icon="function" href="../functions/SkillManager-get_user_invocable_skills">
    Return skills the *user* may invoke via slash-commands.
  </Card>

  <Card title="get_allowed_tools()" icon="function" href="../functions/SkillManager-get_allowed_tools">
    Return the `allowed-tools` list for a skill as a list of names.
  </Card>

  <Card title="invoke()" icon="function" href="../functions/SkillManager-invoke">
    Render a skill body into a ready-to-send prompt.
  </Card>

  <Card title="to_prompt()" icon="function" href="../functions/SkillManager-to_prompt">
    Generate XML prompt for available skills.
  </Card>

  <Card title="get_instructions()" icon="function" href="../functions/SkillManager-get_instructions">
    Get instructions for a skill, activating if needed.
  </Card>

  <Card title="load_resources()" icon="function" href="../functions/SkillManager-load_resources">
    Load all resources for a skill.
  </Card>

  <Card title="create_skill()" icon="function" href="../functions/SkillManager-create_skill">
    Create a new skill with the given content.
  </Card>

  <Card title="edit_skill()" icon="function" href="../functions/SkillManager-edit_skill">
    Edit an existing skill's content (full rewrite).
  </Card>

  <Card title="patch_skill()" icon="function" href="../functions/SkillManager-patch_skill">
    Apply a patch to a skill using fuzzy find-and-replace.
  </Card>

  <Card title="delete_skill()" icon="function" href="../functions/SkillManager-delete_skill">
    Remove a skill.
  </Card>

  <Card title="archive_skill()" icon="function" href="../functions/SkillManager-archive_skill">
    Archive a skill (recoverable, never hard-deleted).
  </Card>

  <Card title="restore_skill()" icon="function" href="../functions/SkillManager-restore_skill">
    Restore a previously archived skill back to active use.
  </Card>

  <Card title="list_archived_skills()" icon="function" href="../functions/SkillManager-list_archived_skills">
    List the names of skills currently in the archive store.
  </Card>

  <Card title="rollback_skill()" icon="function" href="../functions/SkillManager-rollback_skill">
    Roll a skill's SKILL.md back to its content before the last mutation.
  </Card>

  <Card title="write_skill_file()" icon="function" href="../functions/SkillManager-write_skill_file">
    Write a file within a skill's directory.
  </Card>

  <Card title="remove_skill_file()" icon="function" href="../functions/SkillManager-remove_skill_file">
    Remove a file from a skill's directory.
  </Card>

  <Card title="validate_skill_capabilities()" icon="function" href="../functions/SkillManager-validate_skill_capabilities">
    Validate a skill's capability requirements.
  </Card>

  <Card title="get_available_skills_by_state()" icon="function" href="../functions/SkillManager-get_available_skills_by_state">
    Get skills filtered by their capability validation state.
  </Card>

  <Card title="get_skills_diagnostics()" icon="function" href="../functions/SkillManager-get_skills_diagnostics">
    Get capability diagnostics for all skills.
  </Card>

  <Card title="list_pending()" icon="function" href="../functions/SkillManager-list_pending">
    List all pending skill mutations awaiting approval.
  </Card>

  <Card title="approve()" icon="function" href="../functions/SkillManager-approve">
    Approve a pending skill mutation and apply it to disk.
  </Card>

  <Card title="reject()" icon="function" href="../functions/SkillManager-reject">
    Reject a pending skill mutation without applying it.
  </Card>

  <Card title="create()" icon="function" href="../functions/SkillManager-create">
    Protocol alias for :meth:`create_skill`.
  </Card>

  <Card title="edit()" icon="function" href="../functions/SkillManager-edit">
    Protocol alias for :meth:`edit_skill`.
  </Card>

  <Card title="patch()" icon="function" href="../functions/SkillManager-patch">
    Protocol alias for :meth:`patch_skill`.
  </Card>

  <Card title="delete()" icon="function" href="../functions/SkillManager-delete">
    Protocol alias for :meth:`delete_skill`.
  </Card>

  <Card title="write_file()" icon="function" href="../functions/SkillManager-write_file">
    Protocol alias for :meth:`write_skill_file`.
  </Card>

  <Card title="remove_file()" icon="function" href="../functions/SkillManager-remove_file">
    Protocol alias for :meth:`remove_skill_file`.
  </Card>

  <Card title="clear()" icon="function" href="../functions/SkillManager-clear">
    Clear all loaded skills.
  </Card>
</CardGroup>

## Usage

```python theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
manager = SkillManager()

    # Discover skills from directories
    manager.discover(["./skills", "~/.praisonai/skills"])

    # Get XML for system prompt
    prompt_xml = manager.to_prompt()

    # Activate a specific skill
    skill = manager.get_skill("pdf-processing")
    manager.activate(skill)
```

## Source

<Card title="View on GitHub" icon="github" href="https://github.com/MervinPraison/PraisonAI/blob/main/src/praisonai-agents/praisonaiagents/skills/manager.py#L23">
  `praisonaiagents/skills/manager.py` at line 23
</Card>

***

## Related Documentation

<CardGroup cols={2}>
  <Card title="Models Overview" icon="microchip" href="/docs/docs/models" />

  <Card title="LLM Configuration" icon="gear" href="/docs/docs/configuration/llm-config" />

  <Card title="Model Router" icon="route" href="/docs/docs/features/model-router" />

  <Card title="Model Failover" icon="shield" href="/docs/docs/features/model-failover" />

  <Card title="Skills Concept" icon="wand-magic-sparkles" href="/docs/docs/concepts/skills" />
</CardGroup>
