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
Agent Skills Directory
Browse community skills in the open format
Anthropic Skills
Pre-built skills from Anthropic
Skill ZIP Structure
my-skill.zip
├── SKILL.md # Required: name, description, instructions
├── scripts/ # Optional: executable scripts
│ └── extract.py
└── resources/ # Optional: data files, templates
└── template.jsonThe 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 Diskconst skill = await client.skills.get(skillId);
console.log(skill.diskId); // UUID of the backing DiskNext Steps
Last updated on