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)

# Create
created = client.skills.create(
name="...",
content="...",
)
print(created.id)

# Read it back
fetched = client.skills.retrieve(created.id)

# Delete (returns None; raises on failure)
client.skills.delete(created.id)

Methods

Core

list

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

List skills with pagination and filters.

Args: category: Filter by category. search: Search by name or description. tags: Comma-separated tags to filter by. limit: Maximum number of items to return (default: all matching items).

create

create(*, name: str, content: str, description: Optional[str] = None, variables: Optional[Sequence[Mapping[str, Any]]] = None, tags: Optional[Sequence[str]] = None, category: Optional[str] = None, source: Optional[str] = None, files: Optional[Sequence[Mapping[str, Any]]] = None, github_url: Optional[str] = None, mcp_tools: Optional[Sequence[str]] = None, scope: Optional[Mapping[str, Any]] = None) -> Skill

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

Args: name: Skill name (required). content: Skill content / markdown instructions (required). description: Skill description. variables: Template variables, each a plain dict with camelCase wire keys. tags: Discoverability tags. category: Skill category. source: Provenance label. files: Free-form supporting files, each a plain dict. github_url: Source GitHub URL. mcp_tools: MCP tool names this skill uses. scope: Isolation scope ({agentId?, appId?, workflowId?}).

Returns: The created Skill.

variables and files are plain dicts with camelCase wire keys you pass in the list:

created = client.skills.create(
name="Summarizer",
content="Summarize {{topic}} in {{style}} style.",
variables=[
{"name": "topic", "description": "What to summarize", "isRequired": True},
{"name": "style", "defaultValue": "concise", "isRequired": False},
],
files=[
{"path": "examples/sample.md", "content": "# Example"},
],
)

retrieve

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

Get a skill by ID with full content.

Args: skill_id: The skill ID.

update

update(skill_id: str, *, name: Optional[str] = None, description: Optional[str] = None, content: Optional[str] = None, variables: Optional[Sequence[Mapping[str, Any]]] = None, tags: Optional[Sequence[str]] = None, category: Optional[str] = None, change_note: Optional[str] = None, files: Optional[Sequence[Mapping[str, Any]]] = None, mcp_tools: Optional[Sequence[str]] = None) -> Dict[str, Any]

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

Args: skill_id: The skill ID. name: Updated name. description: Updated description. content: Updated content (triggers a version snapshot). variables: Updated template variables. tags: Updated tags. category: Updated category. change_note: Note about this change. files: Updated supporting files. mcp_tools: Updated MCP tool names.

delete

delete(skill_id: <class 'str'>)

Delete a skill and all its versions.

Args: skill_id: The skill ID.

Sharing & scope

update_scope

update_scope(skill_id: <class 'str'>, scope: Optional[Dict[str, Any]] = None) -> Dict[str, Any]

PATCH /skills/:id/scope - re-scope a skill (Phase 4). Owner-only.

Empty scope (or None) moves the row to user-global. Returns &#123;success, scope&#125; with the resolved scope tuple.

Other

assess

assess(skill_id: 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).

Args: skill_id: The skill ID to duplicate.

Returns: Dict with new skillId.

import_from_github

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

Import a skill from a GitHub repository containing SKILL.md.

Args: github_url: Full GitHub URL (e.g., https://github.com/owner/repo).

Returns: Dict with skillId.

list_versions

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

List all versions of a skill, newest first.

Args: skill_id: The skill ID.

record_usage

record_usage(skill_id: <class 'str'>)

Record a usage event for analytics.

Args: skill_id: The skill ID.

render

render(skill_id: <class 'str'>, variables: Dict[str, str]) -> <class 'SkillRenderResult'>

Render a skill with variable substitution.

Args: skill_id: The skill ID. variables: Dict mapping variable names to values.

Returns: SkillRenderResult with rendered content.

restore_version

restore_version(skill_id: <class 'str'>, version_number: <class 'int'>) -> Dict[str, Any]

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

Args: skill_id: The skill ID. version_number: Version number to restore.