roboto.domain.skills.record
Module Contents
MAX_SKILL_DESCRIPTION_LENGTH
SkillAccessibility
Bases: roboto.compat.StrEnum
Controls who can see and edit a skill.
Attributes
SkillAccessibility.Org
All members of the owning org can see and invoke the skill. Only the author can edit.
SkillAccessibility.OrgEditable
All members of the owning org can see and invoke the skill, and any member who has subscribed to it can also edit its versions, name, and tags. Changing the skill’s accessibility and deleting the whole skill remain author-only.
SkillAccessibility.Private
Only the author (created_by) can see, edit, or invoke the skill.
SkillRecord
Bases: pydantic.BaseModel
Top-level skill identity, ownership, and visibility.
A skill on its own carries no procedure content — see SkillVersionRecord.
Parameters
data AnyAttributes
SkillRecord.accessibility
SkillRecord.created
SkillRecord.created_by
SkillRecord.modified
Last edit timestamp. Skill mutations are author-only, so the editor is always created_by — no separate modified_by field is stored.
SkillRecord.name
SkillRecord.org_id
SkillRecord.skill_id
SkillRecord.tags
Free-form labels for categorization (e.g. "qa-review", "experiments"). Skill-level metadata, not version-scoped — they describe what the skill is for, not how a specific version implements it. Edited via the changeset fields on UpdateSkillMetadataRequest (put_tags / remove_tags).
SkillSubscriptionRecord
Bases: pydantic.BaseModel
Per-user state for a single skill.
Created when a user subscribes to a skill (or authors one — authors are auto-subscribed at create time). Carries the user’s choice of which version, if any, should be exposed to the AI auto-invoke registry. ai_version=None means the user is subscribed but has not enabled the skill for AI auto-invoke; manual chip-invocation still works.
Parameters
data AnyAttributes
SkillSubscriptionRecord.ai_version
If set, the AI’s LoadSkillTool registry surfaces this exact version of the skill to this user. If None, the skill is hidden from AI auto-invocation for this user. Manual invocation works regardless.
SkillSubscriptionRecord.skill_id
SkillSubscriptionRecord.user_id
SkillSummary
Bases: pydantic.BaseModel
Compact projection of a skill plus its latest version (if any).
Also includes the caller’s personal subscription state for the skill, when one exists. subscription=None means the caller has neither authored nor subscribed to the skill.
Parameters
data AnyAttributes
SkillSummary.latest_version
The MAX(version) row for this skill. Always populated for summaries returned from the public API: Skill.create() makes the skill row and v1 atomically, and deleting the last version cascades to delete the parent skill in the same transaction. The Optional is defense-in- depth for repo-direct callers (test fixtures, manual SQL) and should not be treated as a real branch by SDK consumers.
SkillSummary.skill
SkillSummary.subscription
The caller’s subscription row for this skill, if any. Populated by the server based on the caller’s identity; not used in INSERT or UPDATE payloads.
SkillVersionRecord
Bases: pydantic.BaseModel
A single, mutable version of a skill’s content.
Parameters
data AnyAttributes
SkillVersionRecord.created
SkillVersionRecord.description
Short ``when to use’’ text. Surfaces verbatim in the LoadSkillTool description.
SkillVersionRecord.modified
SkillVersionRecord.relevant_topics
Topic names this version’s procedure investigates (e.g. "/imu/data").
Version-scoped content, not skill-level metadata — they track the body, so a new version may reference a different set. When the chat AI loads this skill and is given a dataset scope, it resolves each name to a topic schema and returns them alongside the body in the same load_skill tool result, sparing a follow-up get_topic_schema turn. Names only; field-level references live in the body text. Empty when the author listed none.