--- name: ggbucks-player-linking description: "Implement ggbucks game-account linking through server-created intents, a fixed native consent deep link and bounded game-server status polling. Use for player linking; never collect player Clerk tokens or automate native approval." metadata: contract_hash: 9ae5180d5f8f1de2cd25fc025b00af0ee00e1ae569dd787254956d0ebf116216 generator_version: "1" --- # Player linking and consent Keep account linking split between the authenticated game backend, game client and ggbucks native app. Read [references/integration.md](references/integration.md) first, including the compatible unreleased mobile-build prerequisite. The [server example](assets/game-server.mjs) offers createLinkIntent, nativeConsentUrl and getPlayerStatus only. Bind externalPlayerId to the game's authenticated account, store the resulting game player UUID on the server, and open the fixed ggbucks native consent URL from the client. The human taps Approve inside ggbucks after its canonical-profile/device admission. Native inspect/approve in [references/openapi.json](references/openapi.json) describe app-owned boundaries; do not implement them on a game server, automate approval, collect player Clerk credentials, or use a developer/game-secret token for them. Poll status at a bounded interval until linked/expired, expose only the requesting game account's status, and keep tokens out of persistence/logging/analytics. Cancellation leaves gameplay available. Never invent native release readiness or add arbitrary redirect/callback URLs. All accounting is sandbox TEST ggbucks with no cash value; project/game hard caps remain enforced. The skill implements the requested integration and does not authorize deployment, account enforcement, messaging, key changes or live financial mutations. Generated from contract `9ae5180d5f8f1de2cd25fc025b00af0ee00e1ae569dd787254956d0ebf116216`; refresh this bundle when the current contract changes.