{"id":55520,"plugin_id":"plugin_asdk_app_6a8f8d79b7a08191814a3a3f525b390f","kind":"skill","collection_source":"plugin_package","comparison_source":null,"observed_at":"2026-10-26T12:07:40.445Z","digest":"ac62e11885dcd1e2c948a2198a5814a4c4c35483ef088e6c6207877b409e037a","against":null,"payload":{"description":"Play a Klondike solitaire game through the solitaire-chat MCP tools and interactive ChatGPT widget when the user asks to play, resume, move cards, draw, undo, or get a hint.","included_files":[],"name":"solitaire-chat","skill_md_contents":"---\nname: solitaire-chat\ndescription: Play a Klondike solitaire game through the solitaire-chat MCP tools and interactive ChatGPT widget when the user asks to play, resume, move cards, draw, undo, or get a hint.\n---\n\n# Solitaire dans le chat\n\nUtilise les outils MCP solitaire_* pour jouer au Klondike classique, tirage d'une carte.\n\n- Avant de créer une partie, vérifie les résultats précédents de la conversation. Si un game_id existe déjà, ne rappelle jamais solitaire_new_game pour la même demande : appelle solitaire_resume_game avec ce game_id.\n- Si aucun game_id n'est présent, appelle solitaire_new_game exactement une fois et conserve l'identifiant renvoyé. Cette réponse crée l'état et monte directement l'iframe : n'appelle aucun outil de rendu ensuite.\n- solitaire_resume_game est la voie lecture seule pour reprendre une partie existante : il ne crée pas de partie et ne modifie pas l'état. Cette réponse monte directement l'iframe avec le game_id validé : n'appelle aucun outil de rendu ensuite.\n- N'appelle à nouveau solitaire_new_game que si l'utilisateur demande explicitement une nouvelle donne. Ne passe jamais un game_id existant à solitaire_new_game.\n- Quand un outil renvoie la ressource UI, laisse ChatGPT afficher le plateau interactif : l'utilisateur peut cliquer une carte puis sa destination, ou glisser-déposer une carte vers sa destination. Les boutons du widget couvrent aussi nouvelle partie, pioche, annulation et indice.\n- Le game_id est un jeton signe qui contient l'etat de la partie; il n'est pas un identifiant a inventer ou a modifier.\n- Apres chaque action qui change la partie (new_game, draw, move, undo), remplace le game_id conserve par celui renvoye dans la reponse.\n- Pour reprendre une partie dans un nouveau chat, demande a l'utilisateur le dernier game_id renvoye; ne l'invente jamais.\n- Appelle solitaire_get_state avant de jouer si le plateau courant n'est pas deja visible.\n- Pour tirer, appelle solitaire_draw. Quand la pioche est vide, le meme outil recycle la defausse.\n- Pour deplacer, appelle solitaire_move avec from, to et, pour une sequence, count. Les colonnes humaines tableau_1 a tableau_7 sont acceptees; les fondations utilisent f0 a f3 dans l'ordre pique, coeur, carreau, trefle.\n- Pour conseiller sans jouer, appelle solitaire_hint; pour annuler, appelle solitaire_undo.\n- Après chaque outil, résume brièvement l'action et affiche le plateau renvoyé. Ne prétends pas qu'un coup est joué si l'outil a retourné isError: true. Ne monte qu'un seul widget pour une demande de création/reprise et ne relance pas une nouvelle partie pour corriger un rendu.\n- Si l'utilisateur joue depuis l'iframe, conserve le game_id renvoyé par le dernier résultat d'outil ; les clics et glisser-déposer du widget appellent directement les outils MCP et mettent à jour le plateau.\n- Apres une action demandee dans le chat (draw, move, undo ou get_state/hint), conserve le game_id renvoyé et laisse le widget déjà ouvert gérer son état ; n'appelle jamais d'outil de rendu intermédiaire.\n\nLe game_id est un secret de reprise : ne le partage pas dans une URL publique et ne le remplace pas\npar un autre identifiant. Il reste autonome et ne depend pas d'un stockage de partie cote serveur.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}