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

# Read Properties • AI Agent SDK

> read_properties: Read skill properties from SKILL.md frontmatter.

# read\_properties

<div className="flex items-center gap-2">
  <Badge color="teal">Function</Badge>
</div>

> This function is defined in the [**parser**](../modules/parser) module.

Read skill properties from SKILL.md frontmatter.

This function parses the frontmatter and returns properties.
It does NOT perform full validation. Use validate() for that.

## Signature

```python theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
def read_properties(skill_dir: Path) -> SkillProperties
```

## Parameters

<ParamField query="skill_dir" type="Path" required={true}>
  Path to the skill directory
</ParamField>

### Returns

<ResponseField name="Returns" type="SkillProperties">
  SkillProperties with parsed metadata
</ResponseField>

### Exceptions

<AccordionGroup>
  <Accordion title="ParseError">
    If SKILL.md is missing or has invalid YAML
  </Accordion>

  <Accordion title="ValidationError">
    If required fields (name, description) are missing
  </Accordion>
</AccordionGroup>

## Uses

* `Path`
* `find_skill_md`
* `ParseError`
* `skill_md.read_text`
* `parse_frontmatter`
* `ValidationError`
* `SkillProperties`
* `SkillRequirements.from_frontmatter`

## Used By

* [`discover_skill`](../functions/discover_skill)
* [`SkillLoader.load_metadata`](../functions/SkillLoader-load_metadata)
* [`to_prompt`](../functions/to_prompt)

## Source

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