> For the complete documentation index, see [llms.txt](https://docs.karini.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.karini.ai/skills-library/custom-skill.md).

# Custom Skill

Custom Skills are organization-created capabilities that you build, manage, and deploy through the Skills Library. Unlike platform-provided native skills, custom skills give you complete control over content, structure, versioning, and lifecycle management. They enable you to package your organization's domain expertise, proprietary procedures, internal standards, and specialized knowledge into reusable AI capabilities that enhance agent performance across your specific use cases.

Follow the given steps for the creation and management of custom skills within the Skills Library, including file structure requirements, frontmatter configuration, and supported upload methods.

### Creating Skills

Custom skills are authored and managed within the **Skills Library**, while native skills are accessible directly through the **Prompt Playground**.&#x20;

To add a custom skill, choose one of the following methods.

#### Method 1: Upload a ZIP Archive

Ideal for skills with multiple files and complex folder structures that you've prepared externally.

**Steps:**

1. **Prepare Your ZIP Archive**
   * Create a folder containing your skill files
   * Include a `SKILL.md` file with proper frontmatter:

     ```markdown
     ---
     name: Your Skill Name
     description: Brief description of what this skill does
     tags: [tag1, tag2, tag3]
     ---

     # Skill Instructions
     Your detailed instructions here...
     ```
   * Add supporting files (templates, examples, documentation) in subfolders
   * Compress the folder into a `.zip` file
2. **Upload to Skills Library**
   * Navigate to **Skills Library** in the sidebar.
   * Click the **Add New** button.
   * On the upload area (center of screen), either:
     * **Drag and drop** your `.zip` file onto the upload zone.
     * **Click** the upload zone to open file picker and select your `.zip` file.
3. **Review and Edit**
   * The file tree (left sidebar) displays the extracted structure.
   * Click any file to view/edit its content.
   * Make adjustments as needed:
     * Edit file contents directly in the editor pane.
     * Add additional files using the file tree.
     * Delete unwanted files using the trash icon.
     * Rename files by clicking the filename when open.
4. **Finalize Creation**
   * Verify the skill name appears correctly (derived from `SKILL.md` frontmatter)
   * Click **Create** button (top-right).
   * The skill is saved in Draft state.

**ZIP Archive Structure Example:**

```
my-skill.zip
├── SKILL.md                 # Required: Main skill file
├── templates/
│   ├── api-template.md
│   └── response-template.json
├── examples/
│   └── example-usage.md
└── docs/
    └── reference.md
```

***

#### Method 2: Upload a Single Markdown File

Perfect for simple skills that only need instructions without additional supporting files.

**Steps:**

1. **Create Your SKILL.md File**
   * Use any text editor to create a markdown file
   * Include frontmatter with required fields:

     ```markdown
     ---
     name: Quick Documentation Skill
     description: Simple skill for documentation review
     tags: [documentation, review]
     ---

     # Documentation Review Guidelines

     ## Instructions
     1. Check for clarity and completeness
     2. Verify technical accuracy
     3. Ensure consistent formatting
     ```
2. **Upload the File**
   * Go to **Skills Library** → **Add New.**
   * Drag and drop your `.md` file, or click to browse.
   * The file is automatically recognized as `SKILL.md.`
3. **Enhance (Optional)**
   * Add supporting files using the file tree.
   * Edit the content in the editor.
   * Organize with folders if needed.
4. **Create the Skill**
   * Click **Create** to save

#### Method 3: Build from Scratch

Best for creating skills directly in the platform without preparing files externally.

**Steps:**

1. **Initialize Empty Skill**
   * Navigate to **Skills Library** → **Add New.**
   * Leave the upload area empty (don't upload anything)
   * Focus on the file tree (left sidebar).
2. **Create SKILL.md**
   * Click **Add File** button in the file tree.
   * Name it `SKILL.md` (case-sensitive).
   * Click the newly created file to open it.
   * Add frontmatter and content:.

     ```markdown
     ---
     name: My New Skill
     description: Skill created from scratch
     tags: [custom, new]
     ---

     # Skill Content
     Start writing your instructions here...
     ```
   * Click **Save file** (or edit mode save button).
3. **Add Supporting Files**

   **To add a file:**

   * Right-click in the file tree, or use the **Add File** button.
   * Enter the filename (with extension, e.g., `template.md`, `config.json`).
   * Press Enter.
   * Click the file to open it.
   * Add content in the editor.
   * Click **Save file.**

   **To add a folder:**

   * Right-click in the file tree, or use **Add Folder** button.
   * Enter folder name.
   * Press Enter.
   * Right-click the folder to add files inside it.
4. **Organize Structure**
   * Create folders like `templates/`, `examples/`, `docs/.`
   * Move files by renaming them with new paths (e.g., rename `template.md` to `templates/template.md`).
   * Delete unwanted files using the trash icon.
5. **Complete Creation**
   * Ensure `SKILL.md` has a valid `name:` field.
   * Click **Create** button.

**Building Incrementally:** You can create the basic structure first, then continuously add files before clicking Create. All files only exist in memory until you click Create.

#### Method 4: AI-Assisted Creation

Leverage the built-in AI assistant to generate skill content conversationally.

**Steps:**

1. **Open the Skill Assistant**

   * Go to **Skills Library** → **Add New.**
   * Click the floating **assistant icon** (bottom-right).
   *

   ```
   <figure><img src="/files/h82EDpveD7XAAv5apHQb" alt=""><figcaption></figcaption></figure>
   ```

   * The assistant panel slides in from the right
2. **Describe Your Skill**

   * Type a description of what you want the skill to do
   * Be specific about:
     * The domain or purpose (e.g., "API security review")
     * Key areas to cover (e.g., "authentication, authorization, input validation")
     * Desired output format (e.g., "checklist", "step-by-step guide")

   **Example Prompts:**

   ```
   "Create a skill for reviewing Python code with sections for PEP 8 
   compliance, security vulnerabilities, and performance optimization"

   "Build a skill for API documentation that includes OpenAPI 3.0 
   standards, common HTTP methods, and error response examples"

   "Generate a database migration review skill covering schema changes, 
   data integrity, and rollback procedures"
   ```
3. **Watch Content Generation**
   * The assistant generates `SKILL.md` with proper frontmatter.
   * Additional files appear in the file tree as they're generated.
   * Files automatically open to show streaming content.
   * Generated content appears in real-time.
4. **Refine with Follow-ups**
   * Ask the assistant to make changes:

     ```
     "Add a section about OAuth 2.0 to the security skill"
     "Include an example template for REST endpoint documentation"
     "Update the checklist to include database indexing strategies"
     ```
   * The assistant edits files using targeted string replacements.
   * Changes appear immediately in open files (marked as unsaved).
5. **Review and Edit Manually**
   * Click any file to review its content.
   * Make manual edits if needed.
   * Save individual files as you go.
6. **Create the Skill**
   * Once satisfied, click **Create.**
   * The assistant history is cleared for the next skill.

**AI Assistant Tips:**

* Start with a comprehensive first prompt describing the entire skill.
* Use follow-up prompts for refinements and additions.
* Review all generated content before creating.
* The assistant can make mistakes; always verify technical accuracy.
* You can mix AI generation with manual editing.

#### **File Naming Conventions**

**Required:**

* `SKILL.md` - Must exist with proper frontmatter (name, description, tags)

**Recommended:**

* Use descriptive names: `api-template.md` not `template1.md`
* Include extensions: `.md`, `.json`, `.yaml`, `.txt`, `.js`, etc.
* Use lowercase with hyphens: `error-handling-guide.md`
* Organize with folders: `templates/`, `examples/`, `docs/`

**Supported File Types:**

* **Text files**: `.md`, `.txt`, `.json`, `.yaml`, `.yml`, `.js`, `.ts`, `.py`, `.java`, `.html`, `.css`, etc.
* **Binary files**: `.jpg`, `.png`, `.gif`, `.pdf`, `.zip` (viewable but not editable inline)

#### Skill Naming Rules

The skill name is **derived from the `name:` field** in `SKILL.md` frontmatter:

**Valid:**

```markdown
---
name: API Security Review
---
```

**Invalid (will block creation):**

```markdown
---
description: Missing name field
---
```

**Important:**

* The name field is **required** before creation.
* Once created, the skill name **cannot be changed.**
* The name input field in the UI is read-only (displays the derived name).
* To change the name, you must create a new skill.

#### Validation Before Creation

Before clicking Create, ensure:

1. ✅ `SKILL.md` exists with valid frontmatter.
2. ✅ `name:` field is present and not empty.
3. ✅ All desired files are added and saved.
4. ✅ File structure is organized (folders, naming).
5. ✅ Description and tags are meaningful.
6. ✅ Content is reviewed for accuracy.

Refer to the following video to learn how to create a Skill by defining requirements or uploading an existing SOP to Kai.&#x20;

{% embed url="<https://www.loom.com/share/9c1abae9ed654336958f69ec120e22a9>" %}
