Skip to main content
ENCODED EXPERTISE

Teach it once. Every agent knows it.

A Skill is a tested playbook your agents load at runtime — a plain SKILL.md file with the procedure, the safety rules, and the triggers that tell an agent when to reach for it. Author it once, enable it anywhere.

The moment it clicks

Watch a skill get matched.

You never invoke a skill by hand. The agent reads your request, matches it against every enabled skill’s trigger phrases, and loads the winning playbook. Pick a task:

chat · maya
youSummarize my unread emails.
skill matched · email-summarise
mayaLoading the playbook — grouping by sender, ranking by urgency, never marking as read.
Matched trigger: “when the user asks to summarize unread emails” — declared in the skill’s frontmatter. Specific phrasing wins; vague triggers misfire.
chat · maya
youPut together a brief on Northwind.
skill matched · competitor-research · context: fork
mayaThis one runs as a sub-agent with its own context budget — the long research output won’t crowd our conversation.
Matched trigger: “when the user asks for a competitor brief”. Because the skill declares context: fork, it spawns an isolated sub-agent for the heavy lifting.
schedule · friday 16:00 · maya
schedTask: send the weekly digest.
skill matched · weekly-digest
mayaSame playbook, no human in the loop — skills fire on schedules and triggers exactly as they do in chat.
Matched trigger: “when asked to send the weekly digest”. Skills work identically in conversation, in workflows, and on unattended scheduled runs.

Without skills

You paste the same Gmail auth steps, safety rules, and output format into every agent that touches email. When the procedure changes, you update four different instruction blocks — and miss one.

With skills

You write the procedure once in a SKILL.md file. Enable it on any agent. When the procedure changes, you update one file — the catalog broadcasts the refresh to every consumer automatically.
One source of truth

Every agent, same playbook.

When the procedure changes you update one file. Every agent that has it enabled picks up the change on its next run.

ONE SKILL · EVERY AGENT
weekly-digest skill · four agents · illustrative team
Maya · Marketing — sends to 47 recipients~18 min/mo saved
Dario · Sales — pipeline summary to 12 reps~14 min/mo saved
Priya · Support — ticket-volume digest to team lead~14 min/mo saved
Sam · Solo founder — personal inbox roundup~10 min/mo saved
One SKILL.md, zero drift~56 min/mo
ILLUSTRATIVE FIGURES

Update the playbook in one file. Every agent that has it enabled learns it on the next run — no copy-paste, no version drift, no missed instruction block.

— skills · catalog broadcast · single source of truth
The file

One file. Five jobs.

Everything a skill is lives in one Markdown file: YAML frontmatter on top, the playbook below. Click a zone to see what it does.

company/skills/email-summarise/SKILL.md
---name: email-summarisedescription: Reads unread Gmail and returns a ranked summary.version: 1.0.0triggers:  - when the user asks to summarize unread emails  - when the user wants a morning email digestcredentials:  gmail_token: env GMAIL_ACCESS_TOKEN · oauth · requiredallowed-tools:  - mcp_gmail_list_messages  - mcp_gmail_get_message---# email-summariseGroup unread mail by sender. Rank by urgency. One-sentencesummaries. Never mark messages as read.
Identity. name and description are the only required fields — without them the file fails validation and shows an invalid badge on its folder. The name becomes the catalog slug: lowercase, hyphens, and ideally a namespace prefix (acme-gmail-summarise) so it never silently shadows a bundled skill.
Triggers. Natural-language phrases that tell agents when to reach for this skill. Concrete and distinct wins: “when the user asks to summarize unread emails” is strong; “for email tasks” misfires. Add at least two — the drawer warns when a skill has none.
Credentials. Slot declarations, never values. Each entry maps a slot to a vault key — Actionist resolves the real secret from the encrypted vault at runtime, so nothing sensitive ever sits in the file.
Allowed tools. An explicit allow-list of what the agent may call while running this skill. Omit it and the agent keeps its full toolset; specify it and an email-reading skill physically cannot write files or run terminal commands.
The playbook. Free-form Markdown the agent reads and follows: the procedure, the safety rules, the output format. This is where your expertise lives — written like you’d brief a careful new hire.
Where skills come from

Five source groups, one catalog.

Every skill on the Skills page belongs to one of five groups — each marked in the list with its own accent ribbon. The group determines where the skill came from and what you can do with it.

Ships with Actionist

web-task, agent-browser, and the core integration set. agent-browser is always enabled and cannot be toggled off.

Authored locally

Skills you write yourself — a SKILL.md in your workspace. Full ownership, full control.

Shared workspace

Pulled from a shared workspace folder. Visible to your whole organization, never published publicly.

Actionist store

Community and curated skills. Automatic updates when new versions are approved.

Paired server

Deployed by zip upload to a paired VPS. Visible in VPS/web mode, where the page reads “VPS Skills”.

name collision? precedence: bundledcustommarketplace
Shadowing is silent — a custom skill named gmail quietly overrides the bundled gws-gmail with no error shown. Prefix your custom skills (acme-gmail-summarise) and the problem never occurs.

The page

The Skills page at a glance.

Open Skills in the sidebar. Everything you need to discover, manage, and author skills lives here.

24
Discovered
18
Enabled
3
Folders · all healthy
6
Your skills · 4 custom · 2 marketplace
Source
AllBundledCustomWorkspaceMarketplaceVPS
Status
AllEnabledDisabled
Bundled
web-taskbundled
agent-browserbundled
Custom
email-summarisecustom

Stat cards

Four tiles at the top give you a live count: Discovered (total skills indexed), Enabled (ready for agents), Folders (with a health sub-label: “all healthy” or “N missing”), and Your skills (custom count + marketplace count).

Side pane

Use the search box to filter by Source group or by Status (All / Enabled / Disabled). The Folders section shows every registered skill directory with per-folder health badges.

Grouped list

Skills are grouped by source, each group marked with a colored accent ribbon. Within a group, skills sort alphabetically. Empty groups are hidden. Each row shows the skill name, source badge, pack name (if part of one), and a toggle switch.

Header actions

On desktop: Refresh, Add folder, Explore Marketplace, and Create skill. On VPS/web runtime, “Add folder” is replaced by Upload skill for zip archive uploads.
Search matches the skill name, description, pack name, source label, trigger text, required system binaries, and required environment variable names. If you are looking for a skill that calls a specific API, search the env var name directly.
First flow

Find a skill, read it, enable it.

Bundled skills ship with Actionist and are ready to use immediately. Once you find a skill, the enablement flow is the same for every group.

Open the Skills page

Select Skills in the sidebar. The page loads with the Bundled group at the top. Type a keyword in the search box — for example gmail or web.

Open the Skill Drawer

Click any skill row to open the Skill Drawer. The drawer shows the skill’s description, trigger pills (the phrases that tell an agent when to invoke this skill), a Frontmatter preview, and any required environment variables or system binaries.

Enable it globally

Close the drawer and click the toggle switch on the skill row. This adds the skill to the global catalog — every agent can now see it. Bundled skills use an opt-in model: toggling off records the skill to a deny list; toggling back on removes it.

Wire it to an agent

Open the Agent Studio and switch to the Skills tab. Find the skill and flip its toggle. If a Key icon appears beside the toggle, click it to open the credential binding drawer and map the vault secret this skill needs.

Run it

The next time the agent encounters a phrase that matches one of the skill’s triggers, it loads the playbook automatically — exactly like the demo at the top of this page.
wt
web-task
Bundled
Triggers
when asked to open a URL or browse a websitewhen the user needs a web searchfor any browser automation task
Frontmatter preview
Authoring

Two ways to create a custom skill.

The Skill Creator turns a plain-language description into a correctly structured SKILL.md in one conversation. Or author the file yourself if you want full control from the start.

Reference

Frontmatter, field by field.

The anatomy explorer above shows where each field lives — here is the full detail for each one.

name and description

Both fields are required. Without them, the skill fails validation and appears as an invalid badge on its folder in the side pane.
name: email-summarise
description: Reads unread Gmail messages and returns a ranked summary grouped by sender.
name becomes the skill’s catalog slug. Use lowercase letters, numbers, and hyphens. Include a namespace prefix if you manage multiple skills from the same domain — acme-gmail-summarise, not gmail.
A list of natural-language phrases that tell an agent when to invoke this skill. Without triggers, the agent must guess — leading to false positives or missed invocations.
triggers:
  - when the user asks to summarize unread emails
  - when the user wants a morning email digest
  - on email triage requests
Make triggers concrete and distinct. “when the user asks to summarize unread emails” is a strong trigger. “for email tasks” is too broad.
Add at least two triggers to every custom skill. The agent drawer shows a warning for skills with none.
Declares the API credentials this skill needs. Actionist resolves them from your vault at runtime — no keys are stored in the SKILL.md body.
credentials:
  gmail_token:
    env: GMAIL_ACCESS_TOKEN
    provider: google
    kind: oauth
    displayName: Gmail OAuth token
    required: true
Each entry maps a slot name to a vault key (env: KEY_NAME). The provider, kind, displayName, and required fields are optional but help the binding drawer surface the right vault entry.
Controls how the skill runs relative to the current conversation.
ValueBehavior
inline (default)Runs inside the current conversation. Lightweight; shares the parent’s token budget.
forkSpawns a sub-agent with a fresh context budget. Useful for long-running tasks whose output would crowd out the parent conversation.
Use inline for most skills. Reserve fork for tasks that produce large output or run long enough to exhaust the parent’s context window.
An explicit list of tools this skill is permitted to call. Restricts what the agent can do while executing this skill.
allowed-tools:
  - read_file
  - mcp_gmail_list_messages
  - mcp_gmail_get_message
Omitting this field allows any tool the agent already has access to. Specifying it limits the blast radius — an email-reading skill that cannot write files or run terminal commands cannot cause unexpected side effects.
Named variables the agent passes into the skill at invocation time. Useful for skills that handle a class of tasks where one input changes.
arguments:
  competitor_name:
    description: The company name to research
    required: true
  depth:
    description: How deep to go — 'brief' or 'full'
    required: false
Reference arguments in the skill body as {{argument_name}}.

Credentials

One-time setup, zero per-run prompts.

Skills that need API keys declare slots in frontmatter. You bind those slots to vault entries once, and every run resolves them silently:

DeclareThe SKILL.md names a slot — env: STRIPE_SECRET_KEY — never the value.
VaultThe real key lives encrypted in Settings → Credentials Vault.
BindPer agent, the Key icon on the Skills tab maps slot → vault entry.
ResolveAt runtime the secret is injected silently. Rotate in the vault; every skill updates.
Never paste API keys or tokens into the skill body or into agent instructions. The SKILL.md body is readable by anyone with workspace access. Declare secrets in the credentials: frontmatter block and bind them from the vault.

Declare in frontmatter

In your SKILL.md, add a credentials: block naming every secret the skill needs. This is a slot declaration — not the value itself.
credentials:
  stripe_key:
    env: STRIPE_SECRET_KEY
    displayName: Stripe Secret Key
    required: true

Store the key in the vault

Go to Settings → Credentials Vault and add the key under the same variable name (STRIPE_SECRET_KEY). The vault encrypts values at rest.

Credentials vault

How to add, rotate, and scope API keys in the vault.

Bind per agent

In the Agent Studio → Skills tab, find the skill. If it declares credentials, a Key icon appears beside the toggle. Click it to open the binding drawer and confirm which vault entry maps to each slot.
InstructionsSkillsToolsMemory
web-task
Browser automation and web search
gmail-summarise
Reads unread Gmail and returns a ranked summary
competitor-research
Researches a named competitor and produces a brief
Marketplace

A growing library you don’t have to maintain.

The Actionist marketplace hosts community and curated skills. Install once, receive automatic updates when new versions are approved, and uninstall cleanly when you are done.

Open the marketplace

On the Skills page, click Explore Marketplace in the header. The marketplace opens with a trending strip, category tiles, and a paginated skill grid (50 per page). Filter by category, tag, or view (All / Installed / Updates available).

Find and install a skill

Browse or search for a skill. Click Install on its card. The skill installs to your workspace and appears in the From the Marketplace group on the Skills page.

Enable it per agent

Newly installed marketplace skills are disabled by default. Open the Agent Studio → Skills tab, find the skill, and flip its toggle on.

Bind credentials if needed

If the skill declares credentials, a Key icon appears beside the toggle. Click it to open the binding drawer and wire the vault entry.

Keep it current

When an update is available, the skill’s drawer shows an update button. To remove the skill entirely, open the drawer and click Uninstall — this removes the files and ends the subscription.
Marketplace install requires the desktop app. On web runtime, the Install button is disabled with a desktop-only overlay. Install from the desktop and the skill will be available to your workspace from there.
On the VPS/web runtime, the page title shows VPS Skills and the “Add folder” header button becomes Upload skill. Use this to deploy a zip archive directly to your paired server.

Prepare the archive

Zip your skill folder. The archive must be no larger than 50 MB and must contain a SKILL.md at the root or inside a subfolder.

Open the upload dialog

Click Upload skill in the header. The “Upload skill archive” dialog opens. Click to select your .zip file.

Set the slug

Enter or confirm the auto-derived Skill slug — lowercase letters, numbers, dashes, and underscores, starting with a letter or digit. Check Replace existing skill of the same slug to overwrite a prior version.

Upload and confirm

Click Upload. The archive is sent to the paired VPS, extracted, and installed. A success toast confirms the skill was queued.
The folder for skills installed via the marketplace is protected — the trash icon in the Folders sidebar is disabled for these directories. To remove them, use Uninstall from the skill’s drawer.
Publishing

Share your skill with the community.

Custom skills you have tested and refined can be submitted to the Actionist marketplace for review. Once published, other users can install and benefit from your work.

Open the Skill Drawer

On the Skills page, find your custom skill in the Custom group. Click the row to open the Skill Drawer.

Submit for review

In the drawer footer, click Publish to Marketplace. Review the listing details in the dialog that opens, then submit. The skill row now shows a Pending review badge.

Wait for the decision

While review is in progress, the publish button is hidden. Once the review completes, the badge updates:
Pending reviewPublishedRejected
If rejected, the drawer shows the reviewer’s reason so you can address it.

Ship updates

After a decision — approval or rejection — the publish button reappears as New version. Click it to submit an updated version for review.
Only publish skills that contain no internal business data, customer records, or embedded credentials. The publish flow strips token values but does not strip content from the skill body. Skills containing private process details should stay private.

Best practices

What experienced skill authors do differently.

Without trigger phrases, the agent must guess when to invoke the skill — leading to false positives (skill called when you did not want it) and missed invocations (skill not called when you did). Make triggers concrete and distinct. The Skill Drawer shows a warning badge for skills with no triggers — treat triggers as a required field.
A red “N invalid” badge on a folder in the side pane means some SKILL.md files were rejected during indexing. Hover the badge to see up to three filenames and their rejection reasons. The most common cause is missing name: or description: fields — both must appear inside a --- YAML block at the very top of the file.
Source precedence means a custom skill named gmail silently shadows the bundled gws-gmail skill. No error appears — the wrong skill just runs. Use a namespace prefix: acme-gmail-summarise, myteam-daily-report.
context: inline (the default) runs the skill inside the current conversation — lightweight and immediate. context: fork spawns a sub-agent with a fresh context budget, which isolates large output from the parent conversation but costs an additional model turn. Only use fork for skills that generate enough output to crowd out the parent conversation, such as deep research or large-document analysis.
New marketplace installs land in a blocked state by default. Enabling the skill globally on the Skills page makes it visible in the catalog, but it still will not run for any agent until you also enable its toggle in that agent’s Skills tab. If a newly installed skill is not being invoked, check the agent’s Skills tab first.
Limits

Limits to know.

256 KBmax SKILL.md file size
128 KBmax resource file size
500max skills per source root
10max folder nesting levels
50 MBmax VPS zip upload
0symlinks allowed — rejected unconditionally
Five minutes

Author your first skill today.

Click Create skill on the Skills page. Describe the task in plain language. Actionist writes the playbook — you enable it on every agent that needs it.

Skills encode tested procedures, not guesses.
Vault-backed credentials · Per-agent scoping · Marketplace reviews.

Keep going

Next steps.

Agents

Enable skills per agent from the Studio Skills tab, and configure credential bindings for each.

Credentials

Store and rotate the API keys that skills resolve from the vault at runtime.

Marketplace

Browse community skills, receive automatic updates, and publish your own.

Cloud and VPS

Deploy skill archives to a paired server and run agents without the desktop app open.