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

# Create Skill • AI Agent SDK

> create_skill: Create a new skill with the given content.

# create\_skill

<div className="flex items-center gap-2">
  <Badge color="purple">Method</Badge>
</div>

> This is a method of the [**SkillManager**](../classes/SkillManager) class in the [**manager**](../modules/manager) module.

Create a new skill with the given content.

## Signature

```python theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
def create_skill(name: str, content: str, category: str, agent_created: bool, propose: Optional[bool], base_dir: Optional[str]) -> dict
```

## Parameters

<ParamField query="name" type="str" required={true}>
  Skill name (must be valid identifier)
</ParamField>

<ParamField query="content" type="str" required={true}>
  Skill instructions/content for SKILL.md
</ParamField>

<ParamField query="category" type="str" required={false}>
  Optional skill category
</ParamField>

<ParamField query="agent_created" type="bool" required={false} default="True">
  Provenance flag marking the skill as agent-authored. Defaults to True since skills created via this API originate from the agent's self-improvement loop. Lifecycle curator plugins only ever touch agent-created skills.
</ParamField>

<ParamField query="propose" type="Optional[bool]" required={false}>
  If True, stage the mutation for human approval instead of writing to disk. Defaults to the manager's `write_approval` policy (safe-by-default). Pass `propose=False` to write directly in trusted/local contexts.
</ParamField>

<ParamField query="base_dir" type="Optional[str]" required={false}>
  Internal override for the destination skills directory. Used when applying an approved proposal so the skill lands in the directory it was staged from, independent of the approving process's cwd. When None, the destination is resolved via :meth:`_skills_base_dir`.
</ParamField>

### Returns

<ResponseField name="Returns" type="dict">
  Dict with success status and skill info
</ResponseField>

## Uses

* `expanduser`
* `Path`
* `base_path.mkdir`
* `skill_path.mkdir`
* `add_skill`
* `logger.info`

## Used By

* [`SkillManager.create`](../functions/SkillManager-create)

## Source

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

***

## Related Documentation

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

  <Card title="Skills Feature" icon="star" href="/docs/docs/features/skills" />
</CardGroup>
