Skip to main content
Skills are reusable, named instruction packages for the agent — saved workflows a user can run on demand wherever they work with the agent, including Analytics Chat, Workbooks, dashboards, and the IDE. Instead of re-typing the same multi-step request (“produce a weekly revenue report, broken down by region, with week-over-week trends…”), a user picks a skill and the agent follows the workflow you’ve defined. Skills are configured as code in your data model repository, alongside your cubes and views, so they’re versioned, reviewed, and deployed like the rest of your Cube project.
A skill guides what the agent does using the same data access the agent already has. The first version of skills is instructions-only — title, description, and instructions. There is no per-skill data scoping or external actions yet.

Defining skills

Skills are defined as Markdown files under agents/skills/. Each skill lives in its own file: the YAML frontmatter holds metadata, and the Markdown body is the instructions the agent follows.
<!-- agents/skills/weekly-revenue-report.md -->
---
title: "Weekly revenue report"
description: "Use when the user asks for a weekly revenue summary, a weekly revenue report, or week-over-week revenue trends."
---
Produce a weekly revenue report:

1. Report total revenue for the requested week, alongside the prior week and the
   week-over-week percentage change.
2. Break revenue down by region, sorted from highest to lowest.
3. Highlight any region whose revenue changed by more than 10% week over week.
4. If the user names a region or a time range, scope the report accordingly.
Files placed under a skills/ directory are treated as skills automatically — no kind property is required. The name is inferred from the file name (e.g., weekly-revenue-report.mdweekly-revenue-report). Nested folders are allowed for organization but do not namespace the skill — skill names must be unique across the entire skills/ directory.

Frontmatter properties

PropertyTypeRequiredDescription
titlestringYesUser-facing label shown on the skill button and in the / menu.
descriptionstringYesWhat the agent matches free-text requests against to auto-select the skill.
namestringNoUnique identifier. Inferred from the file name if omitted.
The Markdown body is the skill’s instructions.

Inlining skills in YAML

You can also inline skills directly in agents/config.yml under a skills key:
# agents/config.yml
skills:
  - name: weekly-revenue-report
    title: "Weekly revenue report"
    description: "Use when the user asks for a weekly revenue summary or week-over-week trends."
    instructions: |
      Produce a weekly revenue report:
      1. Total revenue for the requested week, with the week-over-week change.
      2. A breakdown by region, sorted by revenue descending.
      3. Highlight any region that moved more than 10% week over week.
Inline skills use the same name, title (required), and description (required) as Markdown skills. Since there is no Markdown body in YAML, provide the instructions inline via the instructions key.
Skills inlined at the root of agents/config.yml are attached to the implicit auto space and applied to the default agent in a single-agent setup. In a multi-agent setup, attach skills to a specific space by inlining them under that space’s skills key (or by placing Markdown files under agents/skills/<space-name>/).

How skills are surfaced

Skills use progressive disclosure. The agent is given a compact catalog of every available skill — just the name, title, and description — so it knows what each skill is for without carrying the full instructions. When a skill is run, the agent loads its complete instructions on demand.
  • The chat UI only ever receives a skill’s name, title, and description. The full instruction body stays server-side and is never sent to the browser.
  • Skills are surfaced through a viewer-accessible deployment endpoint, so they work for any configured agent as well as the default auto agent.
  • Because the agent matches against description, a well-written description makes automatic matching more reliable.
For how skills appear and run in chat — buttons, the / menu, and automatic matching — see Agent skills.

Deploying and testing

Skills ship through the normal Cube development flow: author the skill on a development branch, commit, and merge to your production branch. Because skills live on the branch, a skill on a development branch is testable before it reaches production — open chat against the dev branch and run the skill to confirm it behaves as intended.

Permissions

Authoring skills requires data-model edit access — the same access needed to define rules and certified queries. In Cube Cloud’s built-in roles, that means the Admin or Developer roles, or a custom role with semantic-model edit access. Running skills is available to anyone with chat access, including Explorer and Viewer roles. In-product tips that promote authoring skills, rules, and certified queries are role-aware and shown only to developers.

Writing effective skills

  • Phrase description as a “use when…” statement. This is what the agent matches against incoming requests, so describe the situations the skill applies to.
  • Write instructions as an explicit workflow. Number the steps and state the output you expect, the same way you’d brief an analyst.
  • Account for added context. Users can add specifics after selecting a skill (e.g., /weekly-revenue-report for EMEA, last 6 weeks), so instruct the agent to honor a named region or time range when provided.
  • Keep each skill focused. One skill should cover one well-defined workflow; create separate skills for distinct tasks.