Problem
The @<extension> invocation in Raycast AI chat is derived from package.json name. For an extension that has been in the store for a while, the name slug is a stable identifier — changing it breaks existing users' stored API keys and useCachedState data.
Concrete example: the Cal.com extension's name is cal-com-share-meeting-links (from when it was just a "share meeting link" tool). After the recent expansion + AI Extension tools in #27992, the natural AI invocation would be @cal — but renaming would force every existing user to re-enter their API key and lose their UI preferences.
Proposal
Allow a separate manifest field — e.g. aiName, aiHandle, or an aiAliases: [] array — that controls the AI chat invocation independent of the name slug:
Or alternatively allow aliases:
Workarounds considered
- Rename the extension — breaks every existing user's stored state. Net negative.
- Long invocation — works but
@cal-com-share-meeting-links is awkward to type.
Who benefits
Any extension whose original name no longer reads naturally as an AI handle — common when AI tools are added to a mature extension. Today the only escape valve is a breaking rename, which is the wrong default.
Problem
The
@<extension>invocation in Raycast AI chat is derived frompackage.jsonname. For an extension that has been in the store for a while, thenameslug is a stable identifier — changing it breaks existing users' stored API keys anduseCachedStatedata.Concrete example: the Cal.com extension's
nameiscal-com-share-meeting-links(from when it was just a "share meeting link" tool). After the recent expansion + AI Extension tools in #27992, the natural AI invocation would be@cal— but renaming would force every existing user to re-enter their API key and lose their UI preferences.Proposal
Allow a separate manifest field — e.g.
aiName,aiHandle, or anaiAliases: []array — that controls the AI chat invocation independent of thenameslug:{ "name": "cal-com-share-meeting-links", // stays stable for store + storage "aiName": "cal" // short invocation: @cal }Or alternatively allow aliases:
{ "aiAliases": ["cal", "calcom"] }Workarounds considered
@cal-com-share-meeting-linksis awkward to type.Who benefits
Any extension whose original
nameno longer reads naturally as an AI handle — common when AI tools are added to a mature extension. Today the only escape valve is a breaking rename, which is the wrong default.