Skip to content
Roboto
Esc
↑↓navigate↵open⌘Jpreview
On this page

roboto.domain.skills.operations

Module Contents

CreateSkillRequest

class roboto.domain.skills.operations.CreateSkillRequest(/, **data)#View Source

Bases: pydantic.BaseModel

Create a new skill plus its first version (version=1) in one call.

The author is auto-subscribed at creation time with ai_version set to 1 so the skill is immediately offered to the author’s AI.

Parameters

data Any

Attributes

CreateSkillRequest.accessibility

Visibility scope: Private (only the author), Org (visible to every org member, author-only to edit), or OrgEditable (visible to every org member, editable by any member who subscribes). The author can flip this later via UpdateSkillMetadataRequest.

CreateSkillRequest.body

body str #

Procedure text v1 — the instructions the model executes when this version is invoked. Bumping the version creates a new row; this field never re-edits v1’s body after the fact (use UpdateSkillVersionRequest for that).

CreateSkillRequest.description

description str = None #

“When to use” text for v1. Surfaces verbatim in the load_skill tool’s description so the model can decide whether to invoke this skill. Bumping the version replaces this text on the new row; this field never re-edits v1’s description after the fact.

CreateSkillRequest.model_config

model_config #

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

CreateSkillRequest.name

name str = None #

Skill name. Unique per org across every org-visible skill (Org and OrgEditable share one name namespace); private skills are unique per (org_id, created_by). A user’s private skill and an org-shared skill may therefore share a name without conflict. Must match SKILL_NAME_PATTERN so the name is parseable inside the chat composer’s /slug token (no whitespace, letters/digits/hyphens/underscores only).

CreateSkillRequest.relevant_topics

relevant_topics list[str] = None #

Topic names v1’s procedure investigates (e.g. "/imu/data"), supplied by the caller. Version-scoped content — see SkillVersionRecord.relevant_topics. The SDK stores the list as given; it performs no extraction. (The Roboto web UI populates it by scanning the body for [[topic]] references, but that is a UI convenience, not an SDK guarantee — a direct caller passes whichever names the procedure investigates.) Edit later via UpdateSkillVersionRequest.relevant_topics.

CreateSkillRequest.tags

tags list[str] = None #

Initial set of tags. Edits after creation flow through UpdateSkillMetadataRequest.put_tags / .remove_tags so concurrent updates merge cleanly — see SkillRecord.tags.

CreateSkillVersionRequest

class roboto.domain.skills.operations.CreateSkillVersionRequest(/, **data)#View Source

Bases: pydantic.BaseModel

Add a new version to an existing skill. The new version is assigned MAX(version) + 1.

Parameters

data Any

Attributes

CreateSkillVersionRequest.body

body str #

Procedure text the model executes when this version is invoked.

CreateSkillVersionRequest.description

description str = None #

“When to use” text for this version. Surfaces verbatim in the load_skill tool’s description on every turn this version is offered to the AI.

CreateSkillVersionRequest.model_config

model_config #

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

CreateSkillVersionRequest.relevant_topics

relevant_topics list[str] = None #

Topic names this version’s procedure investigates. Version-scoped content — see SkillVersionRecord.relevant_topics.

SKILL_NAME_PATTERN

roboto.domain.skills.operations.SKILL_NAME_PATTERN = '^[A-Za-z0-9_-]+$'#View Source

SetSkillSubscriptionRequest

class roboto.domain.skills.operations.SetSkillSubscriptionRequest(/, **data)#View Source

Bases: pydantic.BaseModel

Upsert the caller’s subscription for a skill.

Idempotent: creates the subscription row if missing, otherwise updates ai_version in place. Visibility-gated only — the caller does not need to be the skill’s author. The server enforces that ai_version, if provided, references an existing version of the skill.

Parameters

data Any

Attributes

SetSkillSubscriptionRequest.ai_version

ai_version int | None = None #

Pinned AI-available version. None means “subscribed, but not exposed to AI”.

SetSkillSubscriptionRequest.model_config

model_config #

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

SkillListScope

class roboto.domain.skills.operations.SkillListScope#View Source

Bases: roboto.compat.StrEnum

Which caller-relative slice of the visible skills a list-skills query targets.

Attributes

SkillListScope.Org

Org = 'org' #

Org-shared skills authored by someone else, regardless of whether the caller has subscribed.

SkillListScope.Personal

Personal = 'personal' #

Skills the caller authored or has subscribed to — their personal set.

UpdateSkillMetadataRequest

class roboto.domain.skills.operations.UpdateSkillMetadataRequest(/, **data)#View Source

Bases: pydantic.BaseModel

Update top-level skill identity.

Editing name / put_tags / remove_tags is permitted for the author and — on an OrgEditable skill — for any subscribed org member. Changing accessibility is always author-only.

Parameters

data Any

Attributes

UpdateSkillMetadataRequest.accessibility

New visibility scope. Omit to leave unchanged. Author-only — a subscribed non-author editor of an OrgEditable skill cannot change it. Flipping Private → Org / OrgEditable immediately exposes the skill to every org member; flipping to Private prunes every non-author subscription.

UpdateSkillMetadataRequest.model_config

model_config #

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

UpdateSkillMetadataRequest.name

name str | roboto.sentinels.NotSetType = None #

New skill name. Omit (the NotSet default) to leave unchanged. Must match SKILL_NAME_PATTERN and stays unique per org (private skills per author).

UpdateSkillMetadataRequest.put_tags

put_tags list[str] = None #

Tags to add. Empty (the default) means “no change to tags.” Additive semantics — does not clear other tags.

UpdateSkillMetadataRequest.remove_tags

remove_tags list[str] = None #

Tags to remove. Empty (the default) means “no change to tags.” Removing a tag the skill doesn’t have is a no-op.

UpdateSkillVersionRequest

class roboto.domain.skills.operations.UpdateSkillVersionRequest(/, **data)#View Source

Bases: pydantic.BaseModel

Edit fields on an existing version (mutates in place).

Parameters

data Any

Attributes

UpdateSkillVersionRequest.body

New procedure text. Omit (the NotSet default) to leave unchanged. The change applies in place to this version — subscribers pinned to it will see the new body on their next AI invocation; there is no per-edit revision.

UpdateSkillVersionRequest.description

description str | roboto.sentinels.NotSetType = None #

New “when to use” text. Omit (the NotSet default) to leave unchanged.

UpdateSkillVersionRequest.model_config

model_config #

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

UpdateSkillVersionRequest.relevant_topics

relevant_topics list[str] | roboto.sentinels.NotSetType #

New topic-name list. Omit (the NotSet default) to leave unchanged; pass an empty list to clear all topics. Version-scoped content — see SkillVersionRecord.relevant_topics.

Was this page helpful?