Agent Skills
Skills are modular capabilities that extend DAIV's agent with specialized knowledge and workflows. Each skill is a directory containing a SKILL.md file with instructions the agent follows when the skill is triggered.
DAIV ships with built-in skills (/plan, /code-review, /security-audit, /init, /skill-creator). You can also create your own.
How skills work
Skills use a progressive disclosure pattern:
- At startup — DAIV reads the
nameanddescriptionfrom each skill's YAML frontmatter (~100 tokens per skill) - When triggered — DAIV reads the full
SKILL.mdcontent and follows its instructions - As needed — the agent accesses supporting files bundled with the skill (scripts, templates, configs)
This keeps context usage minimal until a skill is actually needed.
Directory structure
Skills can live in any of these directories at the repository root:
.agents/skills/.cursor/skills/.claude/skills/
DAIV scans all three and loads skills from each. If multiple directories contain a skill with the same name, the last one loaded wins.
| Text Only | |
|---|---|
Built-in skills are not copied into your repository. They are loaded from DAIV's own global skills location (/workspace/skills inside the agent), registered as a separate "Global" source alongside the per-repository directories above. Nothing is written to .agents/skills/ and no .gitignore is generated.
You can still override any built-in skill by creating one with the same name in one of the per-repository directories and committing it: per-repository sources take precedence over the global source (see Override priority).
Custom global skills
Custom global skills are user-defined skills that are available across all repositories, unlike per-repository skills. They follow the same directory format as built-in skills (a directory containing a SKILL.md file) and are loaded from a configurable path on the host filesystem.
Setup
-
Create a directory with your custom skills on the host machine:
-
Mount it as a Docker volume into the DAIV worker container at
/home/daiv/data/skills/:YAML The path inside the container is configurable via the
DAIV_AGENT_CUSTOM_SKILLS_PATHenvironment variable (see Environment Variables).
Manage skills from the dashboard
Admin only
The Skills dashboard requires an admin account.
Admins can manage custom global skills from the web dashboard at Skills (/dashboard/skills/) instead of editing the mounted directory by hand. Both approaches write to the same DAIV_AGENT_CUSTOM_SKILLS_PATH location, so they coexist — the dashboard is an alternative to, not a replacement for, the Docker-volume approach.
From the Skills page you can:
- List skills — built-in and custom global skills are shown together, each with its invocation count. A custom skill whose name matches a built-in shadows it and is flagged Overrides built-in.
- Upload a skill as a ZIP archive (see constraints below). Uploading a skill whose name already exists asks you to confirm before it replaces the existing one.
- View a skill — its
SKILL.md, file tree, and usage over the last 30 days. - Download a custom skill's original ZIP.
- Delete a custom skill (built-in skills cannot be deleted; deleting a custom skill that shadowed a built-in restores the built-in).
A successful upload writes the skill into DAIV_AGENT_CUSTOM_SKILLS_PATH and records an audit row attributing it to the uploading admin.
ZIP requirements
The uploaded archive is validated before it is stored:
| Constraint | Limit |
|---|---|
| Top-level directory | Exactly one, named after the skill (a valid slug: lowercase alphanumeric and hyphens, max 63 chars) |
SKILL.md |
Required at <skill-name>/SKILL.md, with name (matching the directory) and description in its frontmatter |
| Compressed size | 5 MiB max |
| Unpacked size | 25 MiB max |
| File count | 200 max |
| Path depth | 8 levels max |
| Per-file size | 1 MiB max |
| Allowed file types | .md, .py, .json, .yaml, .yml, .txt, .sh, .toml, .png, .jpg, .jpeg, .svg, .gif |
Symlinks, absolute paths, .. path traversal, and hidden path segments are rejected; __pycache__ and .pyc entries are dropped silently.
Override priority
Skills are resolved in this order (highest priority wins):
- Per-repository skills — committed in the repository's
.agents/skills/,.cursor/skills/, or.claude/skills/ - Custom global skills — mounted via Docker volume or uploaded from the dashboard
- Built-in skills — shipped with DAIV
This means custom global skills override built-in skills with the same name, and per-repository skills override both.
Notes
- Skills are materialized at each agent invocation, so changes to the mounted volume take effect on the next task without a container restart.
- Custom global skills load from the agent's global skills source, which appears as Global Skills in the system prompt's skills-locations block. Per-repository sources are listed after it and marked
(higher priority), so the agent knows a per-repository skill of the same name wins.
Creating a skill
SKILL.md format
Every skill requires a SKILL.md file with YAML frontmatter:
| Markdown | |
|---|---|
Required fields
| Field | Constraints | Description |
|---|---|---|
name |
Max 64 chars, lowercase alphanumeric and hyphens, must match directory name | Unique identifier for the skill. This is what users type after /. |
description |
Max 1024 chars | What the skill does and when to use it. The agent matches user requests against this text, so include trigger phrases. |
Optional fields
| Field | Description |
|---|---|
license |
License name or reference to a bundled license file |
compatibility |
Environment requirements (max 500 chars) |
metadata |
Arbitrary key-value pairs for additional properties |
allowed-tools |
Space-delimited list of tool names the skill recommends using |
Writing a good description
The description field is how the agent decides whether to use your skill. Include specific trigger phrases:
| YAML | |
|---|---|
Authoring best practices
Be specific and actionable
Tell the agent exactly what steps to follow:
| Markdown | |
|---|---|
Bundle supporting files
Skills can include helper scripts, templates, and reference documents. Reference them using relative paths from the skill directory:
| Text Only | |
|---|---|
| Markdown | |
|---|---|
Use the skill-creator
DAIV includes a built-in /skill-creator skill that walks you through creating a new skill:
| Text Only | |
|---|---|
Example: changelog skill
Security considerations
Use skills from trusted sources only
Skills provide agents with instructions and access to scripts. Only use skills you created yourself or obtained from trusted sources.
- Audit all files in a skill before committing it to your repository
- Review scripts carefully — any executable code in a skill can be run by the agent
- Check external references — skills that fetch data from external URLs pose additional risk