Skills: assign one skill to multiple apps
Skills now carry an app_ids array instead of a single app_id. One skill can serve several apps at once, or every app on the platform.
Set app_ids to the list of apps that should see the skill. Leave it null (or omit it) to share the skill with every app.
{
"key": "summarize-thread",
"name": "Summarize Thread",
"prompt": "Summarize the conversation so far in 3 short bullet points.",
"app_ids": ["vibrantly", "blinklife"]
}A null app_ids marks the skill as global — visible to all apps:
{ "key": "translate", "name": "Translate", "prompt": "Translate to formal English.", "app_ids": null }Why this matters
Before this change, a shared skill had to be duplicated once per app, and each copy drifted on its own. A single record assigned to many apps keeps one source of truth and removes the duplicates.
Backward compatibility
The legacy scalar app_id still works on create and update. TIE folds it into a one-element app_ids list, so existing single-app callers need no changes. Responses now return app_ids.
The app_id query filter on GET /skills is unchanged. It still names the requesting app and returns skills assigned to that app plus global skills.
See the app scoping section of the Skills guide for the full contract.