Skip to content

Custom Skills

Skills are discoverable, loadable packs of instructions and assets. Each skill lives in its own directory with a SKILL.md file that contains YAML frontmatter and markdown instructions.

The directory name must match the skill name in frontmatter. Use allowed-tools to scope what the agent can call when the skill is active.

.skills/
incident-response/
SKILL.md
scripts/
triage.py
references/
playbook.md
---
name: incident-response
description: Triage host compromise signals and summarize next actions.
allowed-tools: read_logs run_skill_script
license: MIT
compatibility: dreadnode>=0.9
metadata:
owner: security
---
Follow this process:
1. Identify the host and timeframe.
2. Run the triage script for baseline indicators.
3. Summarize findings and next actions.

Use discover_skills for a specific directory. If you want to merge skills from multiple locations (such as a capability’s bundled skills path), call it for each directory and combine the results.

from pathlib import Path
from dreadnode.agents.skills import create_skill_tool, discover_skills
project_skills = discover_skills(Path(".skills"))
capability_skills = discover_skills(Path("./capabilities/threat-hunting/skills"))
skill_tool = create_skill_tool([*project_skills, *capability_skills])
print("Loaded skill tool:", skill_tool.name)

create_skill_tool returns a single tool that lists available skills in its description and loads the full SKILL.md content on demand. The agent only sees metadata until it requests instructions.