Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,7 @@ See [docs/en/guides/architecture.md](./docs/en/guides/architecture.md) for detai
| **Guides** | |
| [Events](./docs/en/guides/events.md) | Three-channel event system |
| [Tools](./docs/en/guides/tools.md) | Built-in tools & custom tools |
| [Skills](./docs/en/guides/skills.md) | Skills system for reusable prompts |
| [Providers](./docs/en/guides/providers.md) | Model provider configuration |
| [Database](./docs/en/guides/database.md) | SQLite/PostgreSQL persistence |
| [Resume & Fork](./docs/en/guides/resume-fork.md) | Crash recovery & branching |
Expand Down
1 change: 1 addition & 0 deletions README.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,7 @@ npm run example:room # 多Agent协作
| **使用指南** | |
| [事件系统](./docs/zh-CN/guides/events.md) | 三通道事件系统 |
| [工具系统](./docs/zh-CN/guides/tools.md) | 内置工具与自定义工具 |
| [Skills 系统](./docs/zh-CN/guides/skills.md) | Skills 可复用提示词系统 |
| [Provider 配置](./docs/zh-CN/guides/providers.md) | 模型 Provider 配置 |
| [数据库存储](./docs/zh-CN/guides/database.md) | SQLite/PostgreSQL 持久化 |
| [恢复与分叉](./docs/zh-CN/guides/resume-fork.md) | 崩溃恢复与分支 |
Expand Down
117 changes: 75 additions & 42 deletions docs/en/guides/skills.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,17 @@

KODE SDK provides a complete Skills system supporting modular, reusable capability units that allow Agents to dynamically load and execute specific skills.

> **⚠️ Breaking Changes**
>
> **Default Skills directory has changed from `skills/` to `.skills/`**
>
> - If you haven't set the `SKILLS_DIR` environment variable, SkillsManager now uses `.skills/` as the default directory
> - **Impact**: All code that doesn't explicitly specify the skills directory path
> - **Migration options**:
> - Option 1: Rename your existing `skills/` directory to `.skills/`
> - Option 2: Set environment variable `SKILLS_DIR` to the original directory (e.g., `export SKILLS_DIR=./skills`)
> - Option 3: Explicitly specify the path in code: `new SkillsManager('./skills')`

---

## Core Features
Expand All @@ -11,14 +22,14 @@ KODE SDK provides a complete Skills system supporting modular, reusable capabili
| **Hot Reload** | Skills auto-reload when code changes |
| **Metadata Injection** | Auto-inject skill descriptions into system prompt |
| **Sandbox Isolation** | Each skill has independent file system space |
| **Whitelist Filter** | Selectively load specific skills |
| **Whitelist Filter** | Selectively load specific skills, supports `["/*/"]` (fully disabled) and `["*"]` (load all) special configs |

---

## Directory Structure

```
skills/
.skills/
├── skill-name/ # Skill directory
│ ├── SKILL.md # Skill definition (required)
│ ├── metadata.json # Skill metadata (optional)
Expand Down Expand Up @@ -69,17 +80,17 @@ Detailed instructions for using this skill...
<!-- tabs:start -->
#### **Linux / macOS**
```bash
export SKILLS_DIR=/path/to/skills
export SKILLS_DIR=/path/to/.skills
```

#### **Windows (PowerShell)**
```powershell
$env:SKILLS_DIR="/path/to/skills"
$env:SKILLS_DIR="C:\path\to\.skills"
```

#### **Windows (CMD)**
```cmd
set SKILLS_DIR=/path/to/skills
set SKILLS_DIR=C:\path\to\.skills
```
<!-- tabs:end -->

Expand All @@ -96,7 +107,7 @@ import { SkillsManager } from '@shareai-lab/kode-sdk';

// Create Skills manager
const skillsManager = new SkillsManager(
'./skills', // Skills directory path
'./.skills', // Skills directory path (default is .skills)
['skill1', 'skill2'] // Optional: whitelist
);

Expand Down Expand Up @@ -130,68 +141,87 @@ Limit Agent to only load specific skills:

```typescript
// Only load whitelisted skills
const manager = new SkillsManager('./skills', ['allowed-skill-1', 'allowed-skill-2']);
const manager = new SkillsManager('./.skills', ['allowed-skill-1', 'allowed-skill-2']);
const skills = await manager.getSkillsMetadata();
// Returns only whitelisted skills

// Special config: load all skills
const managerAll = new SkillsManager('./.skills', ['*']);

// Special config: fully disable skills feature
const managerDisabled = new SkillsManager('./.skills', ['/*/']);
```

---

## SkillsManagementManager (CRUD Operations)
## SkillsManagementManager (Management Operations)

SkillsManagementManager provides skill CRUD operations including create, update, and archive.
SkillsManagementManager provides complete skill management operations including install, import, export, archive, and more.

### Basic Operations

```typescript
import { SkillsManagementManager } from '@shareai-lab/kode-sdk';

const manager = new SkillsManagementManager('./skills');
const manager = new SkillsManagementManager('./.skills');

// List all online skills
const skills = await manager.listSkills();

// Get skill details
const skillDetail = await manager.getSkillInfo('skill-name');
// List archived skills
const archived = await manager.listArchivedSkills();
```

// Create new skill
await manager.createSkill('new-skill', {
description: 'New skill description',
content: '# New Skill\n\nDetailed content...'
});
### Skill Install & Import

// Update skill
await manager.updateSkill('skill-name', {
content: '# Updated content'
});
```typescript
// Install skill (from GitHub repo, Git URL, or online skill library)
await manager.installSkill('github:user/repo');

// Delete skill (move to archive)
await manager.deleteSkill('skill-name');
// Import skill (from zip file)
await manager.importSkill('/path/to/skill.zip');
```

// List archived skills
const archived = await manager.listArchivedSkills();
### Skill Copy, Rename & Archive

```typescript
// Copy skill (auto-add random suffix)
const newSkillName = await manager.copySkill('skill-name');

// Rename skill
await manager.renameSkill('old-name', 'new-name');

// Archive skill (move to .archived directory)
await manager.archiveSkill('skill-name');

// Restore archived skill
await manager.restoreSkill('archived-skill');
await manager.unarchiveSkill('archived-skill-abc12345');
```

### File Operations
### View Skill Content & Structure

```typescript
// Get skill file tree
const files = await manager.getSkillFileTree('skill-name');
// View online skill content (complete SKILL.md)
const content = await manager.getOnlineSkillContent('skill-name');

// Read skill file
const content = await manager.readSkillFile('skill-name', 'SKILL.md');
// View archived skill content
const archivedContent = await manager.getArchivedSkillContent('archived-skill-abc12345');

// Write skill file
await manager.writeSkillFile('skill-name', 'references/doc.md', 'content');
// Get online skill file directory structure
const structure = await manager.getOnlineSkillStructure('skill-name');

// Delete skill file
await manager.deleteSkillFile('skill-name', 'references/old-doc.md');
// Get archived skill file directory structure
const archivedStructure = await manager.getArchivedSkillStructure('archived-skill-abc12345');
```

// Upload file to skill directory
await manager.uploadSkillFile('skill-name', 'assets/image.png', fileBuffer);
### Export Skills

```typescript
// Export online skill to zip file
const zipPath = await manager.exportSkill('skill-name', false);

// Export archived skill to zip file
const archivedZipPath = await manager.exportSkill('archived-skill-abc12345', true);
```

---
Expand All @@ -205,8 +235,8 @@ import { Agent, createSkillsTool, SkillsManager } from '@shareai-lab/kode-sdk';

const deps = createDependencies();

// Create Skills manager
const skillsManager = new SkillsManager('./skills');
// Create Skills manager (default uses .skills directory)
const skillsManager = new SkillsManager('./.skills');

// Register Skills tool
const skillsTool = createSkillsTool(skillsManager);
Expand Down Expand Up @@ -247,12 +277,15 @@ Agent: Code formatting skill loaded. Now I can help you format code.
### 2. Whitelist Management

```typescript
// Production: use whitelist
// Production: use whitelist to limit loaded skills
const allowedSkills = ['safe-skill-1', 'safe-skill-2'];
const manager = new SkillsManager('./skills', allowedSkills);
const manager = new SkillsManager('./.skills', allowedSkills);

// Development: load all skills
const devManager = new SkillsManager('./skills');
const devManager = new SkillsManager('./.skills', ['*']);

// Production: fully disable skills feature
const disabledManager = new SkillsManager('./.skills', ['/*/']);
```

### 3. Error Handling
Expand Down
6 changes: 4 additions & 2 deletions docs/en/guides/tools.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,16 +65,18 @@ const agent = await Agent.create({

### Skills Tool

> **⚠️ Note**: Default Skills directory has changed from `skills/` to `.skills/`. See [Skills System Guide - Breaking Changes](./skills.md#breaking-changes)

- `skills`: Load specific skill content (instructions, references, scripts, assets)
- **Parameters**:
- `action`: Operation type (currently only `load`)
- `action`: Operation type (currently only `load`, `list` operation is disabled)
- `skill_name`: Skill name (required when action=load)
- **Returns**:
```typescript
{
ok: true,
data: {
name: string, // Skill name
name: string, // Skill name (folder name)
description: string, // Skill description
content: string, // SKILL.md content
base_dir: string, // Skill base directory
Expand Down
Loading
Loading