Skilder Logo
Skills & Hats

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.

  1. Click Hats in the top navigation bar.
  2. Click New Hat.
  3. Set the name to Executive Assistant.
  4. Add a description:
Manages email triage, drafts replies, and tracks action items.
Helps keep inboxes under control by prioritizing what matters.
  1. Pick a color (e.g., purple).
  2. Create or select a team to organize the hat.
  3. 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.

  1. Click Tools in the top navigation bar, then click Add Tools.

  2. 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.

  3. Back in the registry, find Memory (@modelcontextprotocol/server-memory). Click the card — no configuration needed — click Test Server, then Finish.

  4. 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

  1. Open the Executive Assistant hat you just created.
  2. Click Add Skill.
  3. Set the name to Email Triage.
  4. Add a description:
Reads unread emails, categorizes them by urgency, drafts replies
for routine messages, and tracks action items that need follow-up.
  1. 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.

  1. In the file tree (left panel), find the References section and click the add button.
  2. Set the name to Triage Workflow.
  3. Set the description to Step-by-step process for triaging emails and drafting replies.
  4. 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.

  1. Open the Settings panel (right side of the editor).
  2. 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.

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:

ModeWhen to Use
LIST (default)Fewer than 10 tools — the agent sees them all directly.
OPTIMIZED10+ tools — the agent searches for tools before calling them.
SMARTYou 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.

  1. In the file tree, find the Scripts section and click the add button.
  2. Set the name to Format Triage Summary.
  3. Set the description to Formats categorized emails into a structured triage report.
  4. Select the type: TypeScript.
  5. Select the execution target: AGENT.
  6. 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).

  1. In the file tree, find the Assets section and click the add button.
  2. Set the name to Reply Templates.
  3. Set the description to Standard reply templates for common email scenarios.
  4. 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:

  1. Navigate to the Hats page.
  2. Open the Executive Assistant hat.
  3. 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.

  1. Click Studio in the top navigation bar.
  2. Select the Executive Assistant hat.
  3. 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.

  1. Click the Connect button from the top navigation bar or from the Executive Assistant hat card.
  2. Choose your client and follow the connection instructions:
ClientTransportHow to Connect
ClaudeSTDIOClick Download .mcpb — open the file and Claude Desktop configures itself.
Microsoft CopilotStreamable HTTPCopy the MCP endpoint URL into Copilot Studio.
OpenAI ChatGPTStreamable HTTPCopy the MCP endpoint URL into ChatGPT settings.
Other ClientsSTDIO or Streamable HTTPUse the config JSON or endpoint URL shown in the dialog.
  1. From your connected agent, verify it discovers the skill:
What capabilities do you have available?
  1. 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:

StepWhat You Did
1Created an Executive Assistant hat
2Installed Email and Memory MCP servers (using OAuth)
3Created the Email Triage skill
4Wrote instructions as a markdown reference
5Linked email and memory tools
6Set the execution mode to LIST
7Added a formatting script (optional)
8Attached reply templates as an asset (optional)
9Assigned the skill to the hat
10Tested in Studio
11Connected and tested from an external agent

Next Steps