alicehasnoidea/docs
WebsiteLog inGet Started Free
Guides

Create a Skill

How to create custom Slack slash commands that query Stripe and Supabase data. Build skills with the visual builder or raw SQL in under 5 minutes.

Create a Skill

Skills are saved queries that become slash commands. Once created, anyone in your workspace can run /alice <skill-slug> in Slack to get results. You can also attach schedules, monitors, and action buttons. This guide walks through every step of the skill builder.

Opening the Skill Builder

There are three ways to reach the skill builder:

  1. Dashboard > Skills > New Skill -- The primary entry point from the skills list page.
  2. Templates > Customize -- When you click "Customize" on a template card, it opens the skill builder pre-filled with the template configuration.
  3. AI Generation -- After alice generates a skill from your description, you can click "Edit" to open it in the builder with all fields pre-populated.
The 6-step skill builder showing the Setup step
The skill builder with six steps: Setup, Query, Format, Trigger, Schedule, and Review.

Step 1: Setup

The first step defines the skill's identity -- its name, slug, and description.

Name

The human-readable name displayed in the dashboard and Slack responses. Maximum 50 characters. Choose something descriptive that your team will recognize at a glance.

Good names are short and specific:

  • "MRR Snapshot" (not "Get Monthly Revenue Data")
  • "Churn Risk" (not "Find Users That Might Cancel")
  • "Weekly Digest" (not "Send a Weekly Report Every Monday")

Slug

The URL-safe identifier used in the slash command: /alice <slug>. The slug is auto-generated from the name as you type, converting to lowercase with hyphens. You can edit it manually if needed.

Slugs must be unique within your workspace. If a slug is already taken, the builder shows a validation error.

NameAuto-Generated Slug
MRR Snapshotmrr-snapshot
Failed Paymentsfailed-payments
Active Users Todayactive-users-today

Description

A brief explanation of what the skill does, displayed in the skills list and in /alice help. Maximum 200 characters. Write it from the perspective of someone deciding whether to run this skill.

Setup step showing name, auto-generated slug, and description fields
Enter a name and alice auto-generates the slug. Add a description for your team.

Step 2: Query

The query step is where you define what data the skill retrieves. alice supports five query modes, each suited to different use cases.

The no-code option for Supabase sources. Build a query by selecting from dropdowns -- no SQL required.

Select a table from the dropdown. alice reads your database schema and lists all available tables.
Choose columns to include in the result. Select specific columns or use "All" to return everything.
Add filters using the filter builder. Each filter has a column, operator (equals, not_equals, gt, gte, lt, lte, like, in, is_null, is_not_null), and value (supports $1, $2 parameter references).
Set sort order by choosing a column and direction (ascending or descending).
Set a row limit to cap the number of results returned.
Visual Builder showing table selector, column picker, filter conditions, and sort options
The Visual Builder: select a table, pick columns, add filters, and set sort order.

You can switch to Raw SQL mode at any time to see the generated query. This is useful for learning SQL or for making edits that the Visual Builder does not support.

Write standard PostgreSQL directly. This mode supports the full range of SQL features: joins, aggregations, subqueries, CTEs, window functions, and more.

Use $1, $2, etc. as parameter placeholders. These map to the parameters you define in the skill configuration, which users pass when running the skill.

SELECT u.email, u.created_at, count(e.id) as event_count
FROM users u
LEFT JOIN events e ON e.user_id = u.id
WHERE u.created_at > now() - interval $1
GROUP BY u.email, u.created_at
ORDER BY event_count DESC
LIMIT $2

In this example, $1 might be '7 days' and $2 might be 25. You define these as parameters in the Parameters section.

All SQL queries are enforced as read-only. Write statements (INSERT, UPDATE, DELETE, DROP, etc.) are rejected before reaching your database. See Connect Supabase for security details.

Query Stripe data using pre-built API endpoints. Select an endpoint (subscriptions, customers, charges, invoices, balance_transactions, disputes, refunds) and configure optional parameters like time periods and limits.

This mode is the simplest way to query Stripe -- alice handles the API call, pagination, and response parsing.

Pre-built metric computation wrapping Stripe API calls. Select a metric block (MRR, ARR, churn rate, failed payments, etc.) and an optional time period.

Metric blocks handle the complete pipeline: API call, data processing, metric calculation, and result formatting. They are the same ones used by the skill templates.

Available blocks: mrr, arr, new_mrr, net_revenue, revenue_this_period, churn_rate, churn_risk, cancellations, net_revenue_retention, failed_payments, payment_success_rate, past_due_subscriptions, open_disputes, total_refunds, stripe_fees, expiring_trials, trial_conversions, active_subscriptions, vip_customers, new_customers, delinquent_customers, plan_distribution, daily_digest, weekly_digest.

For the full reference, see Stripe Metrics.

Pro

Query multiple sources in a single skill. Select two or more connected sources, configure a separate query for each, and join the results in memory using a shared key (like email or customer ID).

This is how you build cross-source intelligence -- for example, joining Stripe payment failures with Supabase login activity to identify true churn risk. See Combined Queries for the dedicated guide.

The Test Panel

Every query mode includes a test panel on the right side of the builder. Use it to validate your query with live data before saving.

Test panel showing parameter inputs, a Test Query button, and a results table
The test panel lets you run your query with sample parameters and see results immediately.
  1. Fill in parameter values. If your query has parameters ($1, $2, etc.), the test panel shows input fields for each one. Enter test values.
  2. Click "Test query." alice executes the query against your connected source with the provided parameters.
  3. Review the results. Results appear in a table below the button, showing the exact data your skill will return.

The test panel runs against your live data source, so the results are real. This is the best way to verify your query is correct before making it available to your team.

If the test fails, the panel shows the error message from the source (Stripe API error, SQL syntax error, etc.) to help you debug.

Step 3: Format

The format step controls how results appear in Slack when the skill is run. There are four output types.

Format step showing output type selection with Table highlighted and column configuration
Choose an output type and configure how each field appears in Slack.

Step 4: Trigger

Triggers determine how and when a skill runs. Every skill has the Command trigger enabled by default -- this cannot be disabled. You can add additional triggers.

Command (Always On)

The slash command trigger. Once a skill is saved, any workspace member can run it with /alice <slug>. Parameters are passed as flags: /alice churn-risk --days=30.

Schedule (Cron)

Automatically run the skill on a recurring schedule and post results to a Slack channel. Requires selecting:

  • Cron expression -- Defines the schedule. Choose from presets or write a custom expression:
    • Every morning (9am weekdays): 0 9 * * 1-5
    • Every hour: 0 * * * *
    • Every Monday 9am: 0 9 * * 1
    • Daily at midnight: 0 0 * * *
    • Every 15 minutes: */15 * * * *
  • Slack channel -- Where results are posted. Select from a dropdown of your workspace's channels.
  • Timezone -- Used to interpret the cron expression. Defaults to your browser's timezone.

Monitor (Alert)

Poll the skill at a regular interval and send a notification when a condition is met. Useful for threshold-based alerting like "notify when churn rate exceeds 5%" or "alert when failed payments count is greater than 0."

Configure:

  • Check frequency -- How often alice runs the query: every 5 min, 15 min, 30 min, hourly, every 6 hours, or daily.
  • Condition -- A rule in the form <field> <operator> <value>:
    • Field -- A result field from your query (e.g., count, value, churn_rate). If your query has been tested, alice shows a dropdown of available fields.
    • Operator -- One of: >, >=, <, <=, =, !=, changed
    • Value -- The threshold value (not needed for the changed operator)
  • Cooldown -- Minimum minutes between notifications to prevent spam (default: 60 minutes).
  • Slack channel -- Where alert notifications are posted.
Trigger step showing Command (always on), Schedule (enabled), and Monitor cards with configuration
Command is always active. Enable Schedule or Monitor for automated execution.

Step 5: Schedule

The schedule step provides a focused view of the cron configuration if you enabled the Schedule trigger in the previous step. It offers the same controls as the Trigger step's cron section:

  • Quick preset buttons for common schedules
  • Custom cron expression field
  • Timezone selector
  • Slack channel picker

If you did not enable the Schedule trigger, this step shows a toggle to enable it. Clicking the toggle adds a cron trigger with the default schedule of weekday mornings at 9am (0 9 * * 1-5).

Step 6: Review

The final step shows a complete summary of everything you have configured:

  • Skill name, slug, and description
  • Source(s) being queried
  • Query mode and query content
  • Parameters with types and defaults
  • Output type and field configuration
  • Active triggers (command, schedule, monitor) with their settings
  • Action buttons attached to results
Review step showing a complete summary of the skill configuration before saving
Review everything before saving. Click Create Skill to make it live.

Review each section carefully. If anything needs adjustment, click the step name in the progress bar to jump back to that step.

When you are satisfied, click Create Skill. alice saves the skill and it becomes immediately available:

  • As a slash command: /alice <slug>
  • As a scheduled report (if configured)
  • As a monitored alert (if configured)
  • In the skills list in your dashboard

Editing an Existing Skill

To edit a skill after creation:

  1. Go to Dashboard > Skills and find the skill.
  2. Click on it to open the detail view.
  3. Click Edit to open the skill builder with all fields pre-populated.
  4. Make your changes and click Save Changes.

Editing does not change the skill's ID, so existing scheduled reports and monitors continue to work with the updated configuration.

Tips for Better Skills

  • Start with a template. If a pre-built template is close to what you need, install it and customize rather than building from scratch.
  • Use the test panel early. Test your query before configuring output, triggers, or actions. It is faster to iterate on the query when you can see results immediately.
  • Name skills for your audience. Your team runs these from Slack -- use names they will recognize. "failed-payments" is better than "stripe-charge-failure-report-v2."
  • Add descriptions. Descriptions appear in /alice help and the skills list. A good description helps teammates decide whether to run a skill.
  • Start with command-only. Get the query right first, then add schedules and monitors later. You can always edit the skill to add triggers.
  • Let AI help. If you are stuck on the query, try AI Skill Generation to get a starting point, then edit in the builder.

Next Steps

Was this page helpful?

On this page