roboto.domain.skills.operations
Module Contents
CreateSkillRequest
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 AnyAttributes
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
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
“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
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
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
Initial set of tags. Edits after creation flow through UpdateSkillMetadataRequest.put_tags / .remove_tags so concurrent updates merge cleanly — see SkillRecord.tags.
CreateSkillVersionRequest
Bases: pydantic.BaseModel
Add a new version to an existing skill. The new version is assigned MAX(version) + 1.
Parameters
data AnyAttributes
CreateSkillVersionRequest.body
Procedure text the model executes when this version is invoked.
CreateSkillVersionRequest.description
“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
Topic names this version’s procedure investigates. Version-scoped content — see SkillVersionRecord.relevant_topics.
SKILL_NAME_PATTERN
SetSkillSubscriptionRequest
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 AnyAttributes
SetSkillSubscriptionRequest.ai_version
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
Bases: roboto.compat.StrEnum
Which caller-relative slice of the visible skills a list-skills query targets.
UpdateSkillMetadataRequest
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 AnyAttributes
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
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
Tags to add. Empty (the default) means “no change to tags.” Additive semantics — does not clear other tags.
UpdateSkillMetadataRequest.remove_tags
Tags to remove. Empty (the default) means “no change to tags.” Removing a tag the skill doesn’t have is a no-op.
UpdateSkillVersionRequest
Bases: pydantic.BaseModel
Edit fields on an existing version (mutates in place).
Parameters
data AnyAttributes
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
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
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.