{"id":95547,"plugin_id":"plugin_asdk_app_6ae189f951708191920e9f41269c8cde","kind":"skill","collection_source":"plugin_package","comparison_source":null,"observed_at":"2026-11-13T18:12:13.757Z","digest":"b23003f5cad91431d2f21e85b1d0ecb62efc8e1e4cde47a5869845addec3f2b9","against":null,"payload":{"description":"Use when the user wants to use an app through Corsair that isn't connected yet, asks which apps are connected, or a Corsair call fails because an app isn't connected. Covers finding the app, handing over the sign-in link from get_connect_link or pointing to the Connect button on Corsair's card, and confirming the connection.","included_files":[],"name":"corsair-connect-apps","skill_md_contents":"---\nname: corsair-connect-apps\ndescription: Use when the user wants to use an app through Corsair that isn't connected yet, asks which apps are connected, or a Corsair call fails because an app isn't connected. Covers finding the app, handing over the sign-in link from get_connect_link or pointing to the Connect button on Corsair's card, and confirming the connection.\n---\n\n# Connect an app through Corsair\n\nCorsair's own PM and CRM are ready on every link. Other apps the user works in can be connected too; most need the user to sign in first. Your part is to find the app, get the sign-in link, hand it over, and confirm it worked. You never sign in on the user's behalf.\n\n## Steps\n\n1. **See what's connected.** Call `list_integrations` with no arguments. Each app is in one of four states, given in words and in the result's fields:\n   - \"connected and ready to use\" (`connected: true`): use it. `account` names who it's signed in as, when the app says.\n   - \"set up, but nobody has signed in yet\" (`on_instance: true`, `connected: false`): go to step 3.\n   - \"can be connected from here\" (`available_to_add: true`): go to step 3.\n   - \"needs setting up before it can be connected\" (none of those): see \"When there's no link\" below.\n2. **Look up an app that isn't listed.** Call `list_integrations` with `filter` and `search`, with the app's name in `search`. Use the `id` it returns in every later call. Don't guess ids.\n3. **Get the link.** Call `get_connect_link` with `{\"integration\": \"<id>\"}`. It adds the app first if it isn't here yet.\n4. **Hand it over.** What you say depends on whether the chat shows Corsair's card:\n   - **The chat shows a Corsair card** with the app's name and a **Connect** button (claude.ai and other clients that show MCP Apps). Tell the user to press Connect on the card. Don't paste the link as well: two ways to sign in for one app reads as two steps.\n   - **No card** (most coding agents and terminals). Give the user the `connect_url` exactly as returned; the result text repeats it.\n\n   Then ask them to tell you when they've signed in, and stop.\n5. **Confirm.** When the user says they're done, call `list_integrations` again. The app should read \"connected and ready to use\" (`connected: true`). Then do what they first asked for.\n\n## The card\n\nThe card keeps itself up to date, so you don't have to:\n\n- While the user signs in, it shows **Open again** in case they closed the sign-in tab.\n- When they finish, it shows **Connected** and a **Continue** button that messages you to carry on. Some chats put that message in the user's box for them to send.\n- If the link runs out first, it shows **Link expired** and a **New link** button that gets a fresh one. Don't call `get_connect_link` again for that.\n- An app Corsair provides directly shows **Ready**.\n\n## Rules for the link\n\n- Copy it character for character. Don't shorten it, rebuild it, or put it behind another URL.\n- Never write a link yourself. If `get_connect_link` returned no link, there is no link.\n- Call `get_connect_link` once per app. Each call mints a new sign-in session, so calling it again only produces more links.\n- A link works for about 10 minutes; the reply says how long (\"works for 10 minutes\"), and `expires_at` gives the time. Get a new one only if the user says it failed or ran out and there's no card to renew it.\n- Don't open the link or try to finish the sign-in yourself.\n\n## When it comes back ready\n\nA few apps come back with `connected: true` and no link. There is nothing to sign in to. Use the app right away.\n\n## When there's no link\n\n- **There's no `get_connect_link` tool.** This connection can't add apps. Tell the user to connect the app in Corsair, or to allow this link to add apps, then confirm with `list_integrations`.\n- **`connect_blocked_by` is set, or the result says the app \"has no sign-in link yet\".** Whoever manages this Corsair connection, or the Corsair project behind it, has to finish setting the app up first, for example by adding its OAuth credentials. Tell the user that, quote the reason, and stop.\n- **\"not permitted to authorize it. An admin has to connect it.\"** This connection can use apps but not connect new ones. Whoever manages the connection can connect the app in Corsair, or allow it to send connect links.\n\n## When a call fails because an app isn't connected\n\n`read_data` or `run_script` can fail with \"<app> is not connected. Connect it here: <url>\". Treat that URL the same way: hand it over, wait, confirm with `list_integrations`, then run the original call again. If it says \"no connect link could be made\" instead, tell the user the reason it gave and stop.\n\n## Example\n\nUser: \"Which apps does Corsair have for me?\"\n\n1. `list_integrations` says PM and CRM are connected and ready to use.\n2. Reply with those two and what each holds. If the user then names another app they want, look it up with `list_integrations` (`filter: \"available\"`), get its link with `get_connect_link`, hand it over and wait for them to sign in.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}