Tutorial: Manually Compose a Skill
Build a complete skill from scratch — create a hat, write instructions, add tools, configure scripts, and test it end to end.
This tutorial walks you through composing a skill entirely by hand, without using the Skilder Assistant or AI-powered generation. By the end, you will have a fully working Email Triage skill that reads your inbox, categorizes messages by urgency, drafts replies, and tracks action items.
What you will build:
- A hat called "Executive Assistant" to organize the skill
- A skill with markdown instructions, tools from Gmail or Outlook, and a script
- A live connection to test the skill from an external agent
Prerequisites:
- A Skilder workspace with an AI provider connected (see Quickstart)
- A Google or Microsoft OAuth integration configured in your workspace (see OAuth Integrations)
- Basic familiarity with the Skilder UI
Time required: About 10 minutes.
Step 1: Create a Hat
A hat defines a role for your agent and controls which skills it can access. You will create one to hold the skill you are about to build.
- Click Hats in the top navigation bar.
- Click New Hat.
- Set the name to
Executive Assistant. - Add a description:
Manages email triage, drafts replies, and tracks action items.
Helps keep inboxes under control by prioritizing what matters.- Pick a color (e.g., purple).
- Create or select a team to organize the hat.
- Click Create Hat.
Tip: If you already have a hat you want to add this skill to, skip this step and add the skill directly from that hat's page.
Step 2: Install the Required Tools
This skill needs an email MCP server (leveraging your workspace's OAuth integration) and a memory server for tracking action items.
-
Click Tools in the top navigation bar, then click Add Tools.
-
Find the email server that matches your OAuth integration:
- Google workspace — look for a Gmail-compatible MCP server.
- Microsoft workspace — look for an Outlook-compatible MCP server.
Click the card, review the configuration. Because you already have OAuth configured at the workspace level, the server picks up your credentials automatically. Click Test Server, then Finish.
-
Back in the registry, find Memory (
@modelcontextprotocol/server-memory). Click the card — no configuration needed — click Test Server, then Finish. -
Wait for both servers to show a Connected status.
Your OAuth integration handles authentication. No API keys or tokens to paste — the MCP server uses the connection you already authorized in your profile.
Step 3: Create the Skill
- Open the Executive Assistant hat you just created.
- Click Add Skill.
- Set the name to
Email Triage. - Add a description:
Reads unread emails, categorizes them by urgency, drafts replies
for routine messages, and tracks action items that need follow-up.- Click Create — the skill opens in the Skill Editor.
Step 4: Write Instructions (Reference)
Instructions tell the agent how to execute the skill. You will create a reference document with a clear workflow.
- In the file tree (left panel), find the References section and click the add button.
- Set the name to
Triage Workflow. - Set the description to
Step-by-step process for triaging emails and drafting replies. - In the markdown editor, paste the following:
You are an Executive Assistant. Your job is to help the user
manage their inbox efficiently.
## Workflow
1. **Fetch unread emails** — Use the email tools to retrieve
unread messages from the inbox. Default to the last 24 hours
unless the user specifies a different range.
2. **Categorize each email** — Assign one of these categories:
- 🔴 **Urgent** — Needs a reply today (client escalations,
time-sensitive requests, leadership asks).
- 🟡 **Action Required** — Needs a reply or task, but not
immediately (meeting requests, document reviews, approvals).
- 🔵 **Informational** — No reply needed (newsletters,
automated notifications, FYI threads).
- ⚪ **Low Priority** — Can be archived or batch-processed
(marketing, social notifications, spam that passed filters).
3. **Summarize the inbox** — Present a grouped overview:
### Inbox Triage — [Date]
**Unread messages:** [count]
#### 🔴 Urgent ([count])
- **From:** [sender] — [subject] — [one-line summary]
#### 🟡 Action Required ([count])
- **From:** [sender] — [subject] — [one-line summary]
#### 🔵 Informational ([count])
- [subject] from [sender]
#### ⚪ Low Priority ([count])
- [count] messages (newsletters, notifications)
4. **Draft replies** — For urgent and action-required emails,
propose a draft reply. Keep it professional, concise, and
match the tone of the original thread.
5. **Track action items** — Store any follow-ups in the
knowledge graph with the sender, subject, due date (if
mentioned), and status.
## Guidelines
- Never send emails automatically — always present drafts
for the user to review and approve.
- Respect confidentiality — do not summarize email content
in a way that leaks sensitive information outside the thread.
- When the user asks about pending items, search the knowledge
graph for open action items.
- If asked to reply, use the email tools to send the approved
draft.The editor auto-saves — confirm the save indicator shows success.
Step 5: Select Tools
Link the MCP tools this skill needs.
- Open the Settings panel (right side of the editor).
- In the Tools section, add the following:
- From your email server: tools for reading messages, searching the inbox, and sending replies (e.g.,
gmail_get_messages,gmail_search,gmail_send_message— or the Outlook equivalents). - From Memory:
create_entities,create_relations,search_nodes,open_nodes— to track action items across conversations.
- From your email server: tools for reading messages, searching the inbox, and sending replies (e.g.,
Only select the tools this skill actually needs. Exposing fewer tools keeps the agent focused and reduces token usage.
Step 6: Choose the Execution Mode
Still in the Settings panel, review the Execution Mode:
| Mode | When to Use |
|---|---|
| LIST (default) | Fewer than 10 tools — the agent sees them all directly. |
| OPTIMIZED | 10+ tools — the agent searches for tools before calling them. |
| SMART | You want a dedicated sub-agent with its own system prompt and AI settings. |
For this skill with a handful of tools, LIST mode is the right choice. Leave it as the default.
See Skill Modes for a deeper comparison.
Step 7: Add a Script (Optional)
Scripts let you embed executable code inside a skill. You will add a small script that the agent can call to produce a clean triage summary.
- In the file tree, find the Scripts section and click the add button.
- Set the name to
Format Triage Summary. - Set the description to
Formats categorized emails into a structured triage report. - Select the type:
TypeScript. - Select the execution target:
AGENT. - In the code editor, write your formatting logic:
import { SkillContext } from "@skilder-ai/runtime";
interface Email {
from: string;
subject: string;
summary: string;
category: "urgent" | "action" | "info" | "low";
}
const LABELS: Record<Email["category"], string> = {
urgent: "🔴 Urgent",
action: "🟡 Action Required",
info: "🔵 Informational",
low: "⚪ Low Priority",
};
export default async function (ctx: SkillContext) {
const { emails, date } = ctx.input as {
emails: Email[];
date: string;
};
const grouped = Object.groupBy(emails, (e) => e.category);
const sections = [`### Inbox Triage — ${date}`, ""];
for (const [category, label] of Object.entries(LABELS)) {
const items = grouped[category] ?? [];
sections.push(`#### ${label} (${items.length})`);
for (const email of items) {
sections.push(`- **${email.from}** — ${email.subject} — ${email.summary}`);
}
sections.push("");
}
return { formatted: sections.join("\n") };
}Scripts are optional. The agent can produce formatted output using instructions alone — scripts are useful when you need deterministic formatting or data transformations. See Writing Scripts for the full Script SDK reference.
Step 8: Add an Asset (Optional)
Assets are binary files attached to a skill — templates, images, PDFs, or reference documents that the agent can access at runtime.
For example, you could attach a reply template document with standard responses for common email types (meeting confirmations, out-of-office, delegation).
- In the file tree, find the Assets section and click the add button.
- Set the name to
Reply Templates. - Set the description to
Standard reply templates for common email scenarios. - Upload the file (up to 10 MB).
Assets are accessible to the agent via the @skilder-asset:/ path scheme. See Assets & References for details.
Step 9: Assign the Skill to the Hat
If you created the skill from within the Executive Assistant hat, it is already assigned. Otherwise:
- Navigate to the Hats page.
- Open the Executive Assistant hat.
- Add the Email Triage skill to the hat.
Only agents connected with access to the Executive Assistant hat will discover this skill.
Step 10: Test in Studio
Before connecting an external agent, verify the skill works using the built-in Studio.
- Click Studio in the top navigation bar.
- Select the Executive Assistant hat.
- Send a test prompt:
Triage my inbox from today. Show me what needs attention.The agent should call the email tools to fetch unread messages, categorize them, and present a structured triage summary.
Follow-up prompts to try:
- "Draft a reply to the urgent email from Sarah about the Q2 budget."
- "What action items am I tracking from this week?"
- "Archive all the low-priority newsletters."
Things to verify:
- The agent discovers and uses the correct email tools.
- OAuth credentials work — the agent can read your actual inbox.
- Instructions are followed (categorization, structured output, no auto-sending).
- Memory tools store action items for future reference.
Step 11: Connect and Test From an External Agent
Now connect an external AI client to test the skill end to end.
- Click the Connect button from the top navigation bar or from the Executive Assistant hat card.
- Choose your client and follow the connection instructions:
| Client | Transport | How to Connect |
|---|---|---|
| Claude | STDIO | Click Download .mcpb — open the file and Claude Desktop configures itself. |
| Microsoft Copilot | Streamable HTTP | Copy the MCP endpoint URL into Copilot Studio. |
| OpenAI ChatGPT | Streamable HTTP | Copy the MCP endpoint URL into ChatGPT settings. |
| Other Clients | STDIO or Streamable HTTP | Use the config JSON or endpoint URL shown in the dialog. |
- From your connected agent, verify it discovers the skill:
What capabilities do you have available?- Run the skill:
Check my inbox and tell me what's urgent today.The agent should produce the same structured triage you saw in Studio — but now running through your preferred AI client.
See Connect Your Agent for full connection details and API Keys for key management.
Recap
Here is what you built, step by step:
| Step | What You Did |
|---|---|
| 1 | Created an Executive Assistant hat |
| 2 | Installed Email and Memory MCP servers (using OAuth) |
| 3 | Created the Email Triage skill |
| 4 | Wrote instructions as a markdown reference |
| 5 | Linked email and memory tools |
| 6 | Set the execution mode to LIST |
| 7 | Added a formatting script (optional) |
| 8 | Attached reply templates as an asset (optional) |
| 9 | Assigned the skill to the hat |
| 10 | Tested in Studio |
| 11 | Connected and tested from an external agent |
Next Steps
- Skill Modes — Try upgrading to SMART mode for autonomous execution.
- Writing Scripts — Build more complex workflows with the Script SDK.
- Assets & References — Attach templates and reference documents.
- Organize Skills with Hats — Create more hats for different roles.
- Tools — Install additional MCP servers to expand your capabilities.
- OAuth Integrations — Connect Google, Microsoft, or Zoho services.