# AI Skills > Reusable, packaged instructions that teach Holistics AI how to perform specific tasks quickly and consistently ## What are AI skills? AI Skills are reusable, packaged instructions that teach your AI agent how to perform a specific task. Think of them as playbooks the AI can pull off the shelf at the right moment. Instead of writing a long prompt every time to explain how you want a task done, you invoke the skill (or the AI invokes it automatically based on context) and the job gets done consistently. **Why this matters:** - **Institutional knowledge as code.** Turn your team's playbooks and domain expertise into reusable assets: not tribal knowledge locked in one person's head. - **Consistency.** Every team member gets the same methodology, every time. - **Speed.** Routine tasks that used to take hours become a single prompt. ## Creating AI skills ### Who can create Admins and analysts. ### Where to create Go to **Development → Add AI Skill**. ### What goes into a skill - **Name** (required): Unique identifier for the skill. - **Label**: Display name shown to users. - **Description** (required): What the skill does and when to use it. The AI reads this to decide when to activate the skill. - **Content** (required): Knowledge and instructions the AI follows when the skill is active. - **Invocation**: How the skill gets triggered: - **Auto** (default): AI decides when to invoke based on the user's question. - **Manual**: End users must invoke it explicitly. - **Allow switching invocation**: Allows end-users to toggle between automatic and manual invocation. - **User**: Restrict who can access the skill by attribute expression. **Code example:** ```aml Skill fin_profit_and_loss { label: "Profit and loss" disabled: H.current_user.team != "Finance" //Only Finance team can use description: ''' Produces a P&L for a given period. Use when a user asks for a P&L, income statement, or profitability (e.g., "show me the P&L for Q2," "how profitable were we last month," "income statement YTD"). ''' content: @md Pull revenue, COGS, and all expenses from ${finance_dataset}. Compute gross profit, net profit and their margins. Present as a Metric Sheet with a monthly time dimension over the last 12 periods. Show variance against plan and the prior period. ;; invocation: "auto" allow_switching_invocation: true } ``` ### Best practices - **Clearly define the job.** State what the skill does and when it should trigger. Include the phrases users actually say: not just formal terminology. - **One job = one skill.** If a skill does three things, split it into three. The AI picks the right specific skill faster than it navigates a mega-skill. - **Write instructions, not essays.** Use imperative voice ("Pull revenue from the semantic model"), give step-by-step guidance, and explain reasoning only where it changes the output. - **Show the output format explicitly.** Templates beat descriptions. If you want a specific structure, write it out literally. - **Give 1–2 worked examples.** One input → output pair is worth hundreds of words of explanation. - **Reference assets.** Point to metrics or other analytic assets in your semantic layer instead of redefining them inline. Duplicated logic drifts over time. - **Test and iterate.** Try the skill on 3–5 real user phrasings before rolling it out. If it doesn't trigger when it should, refine the description first: that's where triggering is decided. ## Common use cases Teams use AI Skills to solve a few recurring problems: repeatable work that takes too long, team-specific context the AI keeps missing, and conventions the AI doesn't follow consistently. ### Workflow A **repeatable analysis your team runs the same way each time**: fixed steps, known output format. Reach for this when the task is well-defined and the output should look the same every time. Examples: - Weekly business review: summarizes how key metrics moved, ready before your Monday meeting. - Promotion campaign analysis: the standard readout you run after every promo. - Anomaly investigation: walks through segments to find what caused a spike or drop. ### Team library A **curated set of skills built for one team**: its workflows, vocabulary, datasets, and reporting conventions. Scope skills to a team so only the right people see them, and the AI reaches for the right one when someone from that team asks a question. Reach for this when a team has a recurring set of questions that share the same background knowledge. Examples: - Finance: P&L, balance sheet, cash flow, ARR waterfall, finance terms - Marketing: campaign performance, attribution breakdown, channel mix, marketing terms. - Product: activation funnel, feature adoption, retention cohorts, product terms. ### Convention **Rules the AI should follow** whenever it does a certain kind of work. These are the shared foundation other skills build on. usually invoked through chaining, not directly. Reach for this when you keep correcting the AI the same way across different tasks. Examples: - Time period conventions: called whenever a query references quarters, years, or "last period." - Auto-layout rules: called whenever a dashboard is built. - Chart formatting standards: called whenever a visualization is produced. ## Using AI skills Three ways skills get invoked: - **Automatically:** The AI picks up on what you're asking and activates the right skill. Ask "why did sales drop?" and `anomaly_investigation` kicks in. - **Chained:** One skill calls another in the background. For example, `dashboard_building` automatically calls `auto_layout` when it's time to arrange the charts. - **Manually:** Use **slash** (`/`) and pick a skill: e.g., `/fin_profit_and_loss`. Handy when you want explicit control, when more than one skill could apply, or when you'd rather pick than type. {/* ## Example skills
**Weekly business review** **Name:** `weekly_business_review` --- **Description:** Generate a summary of how key metrics changed from last week to this week. Skill triggered when user asks for WBR, weekly update, Monday report, or similar. --- **Content:** **Step 1: Determine the comparison window** - Default: most recently completed ISO week vs. the week before it. - Override if the user specifies a different window. **Step 2: Determine which metrics to compare** Priority order: 1. Metrics the user explicitly names. 2. If user has a pinned or mentioned dashboard, use the metrics extracted from the dashboard's AML. 3. If user has a pinned or mentioned dataset, use the metrics defined in the dataset. 4. Metrics extracted from a dataset that user has used most frequently and recently. 5. If none of the above, ask the user which metrics to include. Always pull existing metrics. Never compute new metrics in this report. **Step 3: Compute changes** - Absolute change: this_week - last_week - % change: (this_week - last_week) / last_week - If either week has no value, mark N/A and skip styling. **Step 4: Determine direction** - If not yet instructed anywhere, use your judgement to determine the good direction and the bad direction. **Step 5: Display the answer** - Fill in the template below and display it to user. It's the only thing user will see. - Do not display any visualizations you searched or created in the process. 📊 Weekly Business Review (use heading 1) Week from [date] to [date] 💡 Highlights (use heading 2) Pick up to 3 metrics with the largest % change (either direction). Lead with unfavorable moves. 🔢 Metric table (use heading 2) A table of: 1) key metrics, 2) last week value, 3) this week value, 4) changes, and 5) changes in percentage. 💪 Recommended actions (use heading 2) Only include up to 3 actions directly supported by a metric movement in this report. If nothing is clearly actionable thus no recommended actions at all, write "No action recommended this week." **Example** User: "Give me this week's WBR for the revenue dashboard" Output: **# Weekly Business Review** Week from 2026-04-13 to 2026-04-19 **## Highlights** - Revenue grew 6.2% WoW, driven by expansion MRR - New signups dropped 14%: worst week in Q2 - Gross margin held flat at 78% **## Metric table** |** Metric **|** Last week **|** This week **|** Change **|** % **| |---|---|---|---|---| | Revenue | \$1.20M | \$1.27M | +\$70K | +6.2% | | New signups | 420 | 361 | -59 | -14.0% | | Gross margin | 78% | 78% | 0 | 0% | **## Recommended actions** - Investigate the signup drop: check paid channel performance first.
*/}