skill-hub

Change an installed skill's sharing scope

Move one installed skill between TEAM (everyone in the workspace can use it) and PERSONAL (only the person who took it). Requires skills:install. expected_current is a compare-and-set guard: a change that landed first returns 409 instead of clobbering it, and a request whose two scopes are equal is refused (422) rather than silently reassigning ownership. Only an install whose runtime readers enforce ownership can be personal: an instructions install of any provenance, or a skill one whose provenance a run can load (git-catalog, platform-admin, or a skill this workspace wrote itself); a sans install stays shared (400), and so does an install that came from a bundle (400). Sharing a personal install back with the team is always accepted, so read can_change_visibility on the install rather than deriving either rule again. Another member's personal install is never disclosed: it 404s like a missing one, for admins too. One exception, and it is a DISCLOSURE rule rather than a move rule: an install whose personal owner can no longer reach it is shown to a skills:edit holder so the workspace can recover it, so a caller who may install but not edit gets the same 404 for those rows that everyone else does.

patch/v1/skill-installations/{installation_id}/visibility

Request

  • Base URL: https://api.patricia.app (the document declares no server; this is the origin it was published from)
  • URL: https://api.patricia.app/v1/skill-installations/{installation_id}/visibility
  • Auth: HTTP bearer

Path parameters

installation_idstring uuid required

Headers

X-Tenant-Idstring nullable

Request body

expected_current'team' | 'personal' required

Who, within a tenant, an installed skill is visible to (skill_installation.visibility_code).

The skill-side counterpart of IntegrationVisibility: TEAM is any actor in the tenant, PERSONAL is only the actor who installed it (owner_actor_id). A TEAM install is safe to surface in the shared, per-tenant prompt cache; a PERSONAL install is surfaced only through the per-run, actor-scoped progressive-disclosure loader (never the shared prompt, which would leak it across actors).

target'team' | 'personal' required

Who, within a tenant, an installed skill is visible to (skill_installation.visibility_code).

The skill-side counterpart of IntegrationVisibility: TEAM is any actor in the tenant, PERSONAL is only the actor who installed it (owner_actor_id). A TEAM install is safe to surface in the shared, per-tenant prompt cache; a PERSONAL install is surfaced only through the per-run, actor-scoped progressive-disclosure loader (never the shared prompt, which would leak it across actors).

Response

Successful Response

idstring uuid required
skill_idstring uuid required
manifest_version_idstring uuid required
status_codestring required
config_versioninteger required
projection_generationinteger required
activated_atstring date-time nullable required
first_live_atstring date-time nullable required
killed_atstring date-time nullable required
kill_reasonstring nullable required
titlestring nullable
slugstring nullable
descriptionstring nullable
listing_state'unlisted' | 'testing' | 'listed'

Who can discover and install a global skill.

is_portableboolean nullable
archetype_codestring nullable
can_edit_definitionboolean nullable
removableboolean

Whether this installation may be removed from the workspace.

visibility_code'team' | 'personal' required

Who, within a tenant, an installed skill is visible to (skill_installation.visibility_code).

The skill-side counterpart of IntegrationVisibility: TEAM is any actor in the tenant, PERSONAL is only the actor who installed it (owner_actor_id). A TEAM install is safe to surface in the shared, per-tenant prompt cache; a PERSONAL install is surfaced only through the per-run, actor-scoped progressive-disclosure loader (never the shared prompt, which would leak it across actors).

is_mineboolean nullable
can_change_visibilityboolean
has_settingsboolean nullable
is_catalog_defaultboolean
effectively_enabledboolean
update_availableboolean
available_version_idstring uuid nullable
outdated_configboolean
outdated_config_reasonsstring[]

Changes

No recorded changes to this operation across all 1 revision of this API.