Skip to main content

Skills

The Skill Library stores reusable, versioned agent skills. Use this resource for CRUD, versioning, rendering, GitHub import, and sharing.

Access it as client.skills on a Strongly client, or the same path on AsyncStrongly with await. All methods exist on both with identical signatures.

Quick start​

from strongly import Strongly

client = Strongly()

# List (auto-paginates as you iterate) # filters: category, search, tags
for skill in client.skills.list():
print(skill.id)

Methods​

Core​

list​

list(*, category: str | None = None, search: str | None = None, tags: str | None = None, limit: int | None = None) -> SyncPaginator[Skill]

List skills with pagination and filters.

Parameters

  • category (str | None, optional): Filter by category.
  • search (str | None, optional): Search by name or description.
  • tags (str | None, optional): Comma-separated tags to filter by.
  • limit (int | None, optional): Maximum number of items to return (default: all matching items).

create​

create(*, name: <class 'str'>, content: <class 'str'>, description: str | None = None, variables: collections.abc.Sequence[collections.abc.Mapping[str, Any]] | None = None, tags: collections.abc.Sequence[str] | None = None, category: str | None = None, source: str | None = None, files: collections.abc.Sequence[collections.abc.Mapping[str, Any]] | None = None, github_url: str | None = None, mcp_tools: collections.abc.Sequence[str] | None = None, linked_ids: collections.abc.Sequence[str] | None = None) -> <class 'Skill'>

Create a new skill. Auto-detects {{variables}} and creates version 1.

Parameters

  • name (str): Skill name (required): kebab-case, lowercase letters, digits and hyphens, starting with a letter, up to 64 characters (unit-converter). Agents find a skill by its name; any other name is refused with a validation error.
  • content (str): Skill content / markdown instructions (required).
  • description (str | None, optional): Skill description.
  • variables (Sequence[Mapping[str, Any]] | None, optional): Template variables, each a plain dict with camelCase wire keys, e.g. [{"name": "topic", "defaultValue": "AI"}].
  • tags (Sequence[str] | None, optional): Discoverability tags.
  • category (str | None, optional): Skill category.
  • source (str | None, optional): Provenance label.
  • files (Sequence[Mapping[str, Any]] | None, optional): Free-form supporting files.
  • github_url (str | None, optional): Source GitHub URL.
  • mcp_tools (Sequence[str] | None, optional): MCP tool names this skill uses.
  • linked_ids (Sequence[str] | None, optional): Agents and pools (ids) the skill belongs to.

Returns

  • Skill: The created Skill.

retrieve​

retrieve(skill_id: <class 'str'>) -> <class 'Skill'>

Get a skill by ID with full content.

Parameters

  • skill_id (str): The skill ID.

update​

update(skill_id: <class 'str'>, *, name: str | None = None, description: str | None = None, content: str | None = None, variables: collections.abc.Sequence[collections.abc.Mapping[str, Any]] | None = None, tags: collections.abc.Sequence[str] | None = None, category: str | None = None, linked_ids: collections.abc.Sequence[str] | None = None, change_note: str | None = None, files: collections.abc.Sequence[collections.abc.Mapping[str, Any]] | None = None, mcp_tools: collections.abc.Sequence[str] | None = None) -> dict[str, Any]

Update a skill. Content changes auto-create a new version.

Parameters

  • skill_id (str): The skill ID.
  • name (str | None, optional): Updated name, kebab-case as on create. A skill named before the rule keeps its name until it is renamed.
  • description (str | None, optional): Updated description.
  • content (str | None, optional): Updated content (triggers a version snapshot).
  • variables (Sequence[Mapping[str, Any]] | None, optional): Updated template variables.
  • tags (Sequence[str] | None, optional): Updated tags.
  • category (str | None, optional): Updated category.
  • linked_ids (Sequence[str] | None, optional): Replace the agents and pools the skill belongs to.
  • change_note (str | None, optional): Note about this change.
  • files (Sequence[Mapping[str, Any]] | None, optional): Updated supporting files.
  • mcp_tools (Sequence[str] | None, optional): Updated MCP tool names.

delete​

delete(skill_id: <class 'str'>)

Delete a skill and all its versions.

Parameters

  • skill_id (str): The skill ID.

Other​

assess​

assess(skill_id: <class 'str'>) -> dict[str, Any]

Run an automated quality assessment on a skill.

duplicate​

duplicate(skill_id: <class 'str'>) -> dict[str, Any]

Duplicate a skill (creates a copy owned by the current user).

Parameters

  • skill_id (str): The skill ID to duplicate.

Returns

  • dict[str, Any]: Dict with new skillId.

get_file​

get_file(skill_id: <class 'str'>, path: <class 'str'>) -> dict[str, Any]

Read one of a skill's files (SKILL.md included): {skill_id, path, content}.

import_from_github​

import_from_github(github_url: <class 'str'>) -> dict[str, Any]

Import a skill folder from GitHub: its SKILL.md and every text file under it.

Parameters

  • github_url (str): The repository (https://github.com/owner/repo), a folder in it (https://github.com/owner/repo/tree/main/skills/my-skill) or a file in the folder; a URL without a branch reads the default branch.

Returns

  • dict[str, Any]: skillId, action (created, superseded or unchanged when the same skill is already in the Library), name, description, filesCount (supporting files imported) and skippedFiles (binary files, not imported).

list_files​

list_files(skill_id: <class 'str'>) -> dict[str, Any]

List a skill's files: {skill_id, count, files}, each with path and size.

list_versions​

list_versions(skill_id: <class 'str'>) -> list[SkillVersion]

List all versions of a skill, newest first.

Parameters

  • skill_id (str): The skill ID.

record_usage​

record_usage(skill_id: <class 'str'>) -> <class 'int'>

Record that the skill was used; return how many times it has been used.

Parameters

  • skill_id (str): The skill ID.

render​

render(skill_id: <class 'str'>, variables: collections.abc.Mapping[str, str]) -> <class 'SkillRenderResult'>

Render a skill with variable substitution.

Parameters

  • skill_id (str): The skill ID.
  • variables (Mapping[str, str]): Mapping of variable names to substitution values.

Returns

  • SkillRenderResult: SkillRenderResult with rendered content.

restore_version​

restore_version(skill_id: <class 'str'>, version_number: <class 'int'>) -> <class 'Skill'>

Restore a previous version (creates a new version with restored content).

Parameters

  • skill_id (str): The skill ID.
  • version_number (int): Version number to restore.
search(*, user_turn: <class 'str'>, limit: int | None = None, tags: collections.abc.Sequence[str] | None = None, linked_ids: collections.abc.Sequence[str] | None = None) -> dict[str, Any]

Find the skills relevant to a turn, ranked, with the context_block for a prompt.

Returns {skills, count, context_block}.

Parameters

  • user_turn (str): The message the skills are for.
  • tags, linked_ids (Sequence[str] | None, optional): Only skills with one of these tags, or in one of these pools.