Skip to main content
Use skills() or hosted().skills. These are skill folders mounted into runs; evolve skills separately serves documentation. Examples use a configured client. Python examples run inside an async function.

upload

Store one skill folder or a root containing child skill folders.
Returns: An array/list of SkillUpload, one per discovered skill.
Identical content under the same name reuses a record. Different content creates a new immutable upload:<id> reference and moves name:<skill-name> to that record. Existing jobs keep their locked content.

list

Read one page or iterate all visible uploaded skills.
Returns: SkillUploadPage when awaited; a SkillUpload per iteration.
Page fields are items, nextCursor, hasMore in TypeScript; items, next_cursor, has_more in Python.

get

Read uploaded metadata and its SKILL.md content.
Returns: TypeScript SkillUpload & { skill_md: string | null }; Python SkillUpload with skill_md populated.
Pass a record id or name:<skill-name> as the required argument (id in TypeScript, skill_id in Python). A name reference resolves only your own current upload. Use a record id for an upload shared through your organization. An unknown name returns skill_name_not_found.

delete

Delete an uploaded record you own.
Returns: No value (void / None).
Pass the record id, not a name: reference. A non-terminal job using the record prevents deletion. Completed jobs retain their recorded skill locks.

Skill fields

digest is sha256:<hex>. ref is the immutable upload:<id> handle used by job agent arms. description is extracted from SKILL.md.Python returns these fields as dataclass attributes and adds skill_md: Optional[str], defaulting to None for list/upload results. TypeScript adds skill_md only to the get result.
Fields