Agent skills are reusable instruction modules that enhance agent capabilities. Skills follow the Agent Skills open standard and are defined as Markdown files with YAML frontmatter inside named directories. They are automatically loaded and made available to the agent at runtime.
Note
Quick Apps implements a subset of the Agent Skills specification. See Supported vs unsupported features below for details.
- Skills are loaded from
config/predefined/skills/at startup. Each skill lives in its own subdirectory (e.g.skills/my-skill/SKILL.md). - Each skill is presented to the agent as XML metadata in the system prompt.
- The agent can read detailed skill instructions on-demand using the internal
read_skilltool. - Skills support metadata including name, description, license, compatibility, and allowed tools.
- Extra skill directories can be layered via
PREDEFINED_EXTRA_PATHS(see README for env var details).
config/predefined/skills/
└── my-skill/
└── SKILL.md
The directory name must match the name field in the YAML frontmatter. Skills that fail this check are skipped at
startup.
Create a directory under config/predefined/skills/ named after the skill, then add a SKILL.md file:
---
name: my-skill
description: Brief description of what this skill does
license: MIT
compatibility: Requires specific tools or environment
metadata:
version: "1.0"
author: "Your Name"
allowed-tools: tool1 tool2 tool3
---
# Skill Title
Detailed instructions and guidelines for the agent...| Field | Required | Description | Constraints |
|---|---|---|---|
name |
Yes | Unique skill identifier | Max 64 chars, lowercase letters/numbers/hyphens only, no leading/trailing or consecutive hyphens |
description |
Yes | Brief skill description | Max 1024 chars, non-empty |
license |
No | License name or reference | Any string |
compatibility |
No | Environment or tool requirements | Max 500 chars |
metadata |
No | Arbitrary key-value mappings | Dictionary of strings |
allowed-tools |
No | Space-delimited list of tool names the skill can use | List or space-delimited string |
config/predefined/skills/
└── data-analysis-helper/
└── SKILL.md
---
name: data-analysis-helper
description: Provides guidelines for analyzing and visualizing data using available tools
compatibility: Requires Python interpreter and plotting libraries
metadata:
version: "1.0"
category: data-science
allowed-tools: py_interpreter plot_generator
---
# Data Analysis Helper
## Purpose
Guide the agent through systematic data analysis workflows.
## Instructions
1. First examine the data structure
2. Identify patterns and outliers
3. Create visualizations when appropriate
4. Provide statistical summaries- Skills are validated at startup; invalid skills are logged and skipped.
- The agent receives skill metadata automatically but must explicitly call
read_skillto access full content. - Skills can reference specific tools via the
allowed-toolsfield. - Built-in skills (e.g.
tool-call-file-parameter-formatting) are included by default. - Restart the service after adding or modifying skills to reload them.
- Flat
.mdfiles placed directly inskills/(not in a subdirectory) are ignored.
Quick Apps implements the core of the Agent Skills specification but not all optional features. The table below summarises what is and isn't supported.
| Feature | Status | Notes |
|---|---|---|
SKILL.md with YAML frontmatter |
Supported | All standard frontmatter fields are parsed and validated. |
Directory-based layout (skill-name/SKILL.md) |
Supported | Directory name must match name in frontmatter. |
name validation (length, charset, consecutive hyphens) |
Supported | |
description, license, compatibility, metadata |
Supported | |
allowed-tools |
Partial | Exposed in XML metadata but not enforced at runtime. |
Optional subdirectories (scripts/, references/, assets/) |
Not supported | Only SKILL.md is read; other directory contents are ignored. |
| Progressive disclosure (on-demand file references) | Not supported | The agent can read SKILL.md content via read_skill but cannot access referenced files within the skill directory. |
| Dynamic skill registration | Not supported | Skills are loaded once at startup; adding or modifying skills requires a restart. |
For the full specification, see agentskills.io/specification. For design rationale and known limitations, see the design doc.
In addition to predefined skills bundled at build time, users can configure skills sourced from
DIAL prompts — text content stored via the DIAL Core prompts API (/v1/prompts/). A DIAL prompt
whose content follows the Agent Skills specification (valid YAML frontmatter with name and
description) can be referenced in a QuickApp config and used as a skill.
Add a skills array to the application config:
{
"orchestrator": { "..." : "..." },
"contexts": [],
"tool_sets": [],
"skills": [
{
"type": "dial-prompt",
"url": "prompts/<bucket>/<folder>/<prompt-name>"
}
]
}The url field must be a relative path including the prompts/ resource type prefix
(e.g. prompts/my-bucket/skills/code-review). This follows the same convention as file context URLs
(files/<bucket>/...). DIAL Core auto-shares the referenced prompt at deployment time via the
dial:resource annotation.
DIAL prompt skills are validated at request time using the same rules as predefined skills:
- Must have YAML frontmatter delimited by
--- name(required): max 64 chars, lowercase alphanumeric + hyphensdescription(required): max 1024 chars- Prompts with no content, empty content, or invalid frontmatter are silently skipped with a warning log
If a DIAL prompt skill has the same name as a predefined (admin-configured) skill, the predefined
skill takes precedence. The DIAL prompt skill is skipped and a warning is logged.
- Invalid prompt: Skipped with a warning. Other skills remain available.
- Inaccessible prompt (404, 403): Skipped with a warning. The request is served with remaining skills.
- DIAL Core outage: Falls back to predefined-only skills. A DIAL Core failure never prevents the request from being served.
- DIAL prompts are single text documents — they cannot contain
scripts/,references/, orassets/subdirectories. - DIAL prompts are fetched fresh on each request (no cross-request caching).
- The
skillsconfig field is a preview feature — it requiresENABLE_PREVIEW_FEATURES=true.
For design details, see the design doc.
The config/predefined/instructions/ directory convention and AgentInstructionsProvider have been removed. The skills
framework is their replacement.
Previously, .md files placed in config/predefined/instructions/ were concatenated in filename order and appended to
the system prompt. Skills differ in several ways:
- Each skill lives in its own directory with a
SKILL.mdfile containing YAML frontmatter. - Skills are not concatenated into the system prompt directly. Instead, their metadata (name, description) appears as
an
<available_skills>XML block, and the agent reads full content on demand via theread_skilltool. - Skills support metadata fields (
license,compatibility,allowed-tools) that instructions did not have.
-
For each
.mdfile inconfig/predefined/instructions/, create a skill directory:# Before config/predefined/instructions/my-guidelines.md # After config/predefined/skills/my-guidelines/SKILL.md -
Add YAML frontmatter to the top of each
SKILL.md:--- name: my-guidelines description: Brief description of what these guidelines cover ---
The
namemust match the directory name. Thedescriptionshould help the agent decide when to read the skill. -
Remove the
config/predefined/instructions/directory. -
If you were using
PREDEFINED_BASE_PATHto point to a custom instructions directory, switch toPREDEFINED_EXTRA_PATHS(see README for details).