Acontext
Features

Agent Skill

Store reusable agent skills

Skills are folders of instructions, scripts, and resources that agents can discover and use. Upload skills as ZIP files containing a SKILL.md with name and description.

Skills can also be auto-generated by the skill memory pipeline. See Skill Memory Quickstart.

Where to Find Skills

Skill ZIP Structure

my-skill.zip
├── SKILL.md          # Required: name, description, instructions
├── scripts/          # Optional: executable scripts
│   └── extract.py
└── resources/        # Optional: data files, templates
    └── template.json

The SKILL.md file must include frontmatter with name and description:

---
name: data-extraction
description: Extract structured data from documents
---

# Data Extraction Skill
Instructions for the agent...

Quick Start

Upload a skill

import os
from acontext import AcontextClient, FileUpload

client = AcontextClient(api_key=os.getenv("ACONTEXT_API_KEY"))

with open("my-skill.zip", "rb") as f:
    skill = client.skills.create(
        file=FileUpload(filename="my-skill.zip", content=f.read()),
        meta={"version": "1.0"}
    )
print(f"Created: {skill.name} ({skill.id})")
import { AcontextClient, FileUpload } from '@acontext/acontext';
import * as fs from 'fs';

const client = new AcontextClient({
    apiKey: process.env.ACONTEXT_API_KEY,
});

const fileContent = fs.readFileSync("my-skill.zip");
const skill = await client.skills.create({
    file: new FileUpload({ filename: "my-skill.zip", content: fileContent }),
    meta: { version: "1.0" },
});
console.log(`Created: ${skill.name} (${skill.id})`);

Browse catalog

catalog = client.skills.list_catalog()
for item in catalog.items:
    print(f"{item.name}: {item.description}")
const catalog = await client.skills.listCatalog();
for (const item of catalog.items) {
    console.log(`${item.name}: ${item.description}`);
}

Get skill details

skill = client.skills.get(skill_id)
for file_info in skill.file_index:
    print(f"{file_info.path} ({file_info.mime})")
const skillDetails = await client.skills.get(skillId);
for (const fileInfo of skillDetails.fileIndex || []) {
    console.log(`${fileInfo.path} (${fileInfo.mime})`);
}

Read files

result = client.skills.get_file(skill_id=skill.id, file_path="SKILL.md")
print(result.content.raw)

# Binary files return a URL instead
result = client.skills.get_file(skill_id=skill.id, file_path="images/diagram.png")
print(result.url)
const fileResult = await client.skills.getFile({ skillId: skill.id, filePath: "SKILL.md" });
console.log(fileResult.content?.raw);

// Binary files return a URL instead
const imageResult = await client.skills.getFile({ skillId: skill.id, filePath: "images/diagram.png" });
console.log(imageResult.url);

Delete skill

client.skills.delete(skill.id)
await client.skills.delete(skill.id);

Disk Storage

Each skill stores its files on an internal Disk. The disk_id is returned when you create or get a skill.

skill = client.skills.get(skill_id)
print(skill.disk_id)  # UUID of the backing Disk
const skill = await client.skills.get(skillId);
console.log(skill.diskId); // UUID of the backing Disk

Next Steps

Last updated on

On this page