connect-google
Give the user's agents their Google account through gog (Gmail, Calendar, Drive, Docs, Sheets, Slides, Contacts, Tasks). Do every step yourself in Chrome AI with the dev-browser skill; the user only chooses their account and clicks "Allow" in Google's pages. Talk to the user in their language, short messages, no jargon (never say "OAuth", "client secret", "scope" or "token" to them; say "Google access" and "the key").
If you got this skill from a link instead of a local folder, install nothing else from the repo: download scripts/gog-oauth.sh with curl -fsSL https://raw.githubusercontent.com/Melvynx/ai-maxxing-skills/main/skills/connect-google/scripts/gog-oauth.sh -o <scratch>/gog-oauth.sh, and read another skill it names only when you reach it, from https://raw.githubusercontent.com/Melvynx/ai-maxxing-skills/main/skills/<skill-name>/SKILL.md.
Never print, log or repeat the key's secret, a sign-in code or anything gog keeps in the Keychain. Browser scripts that read the secret write it straight to a file with writeFile and log only { saved: true }. Ask the user before you tick a Google terms box or publish the app (steps 3 and 6), once for both.
-
Check the tools.
chrome-ai startanddev-browser --helpmust answer (otherwise runsetup-dev-browser).gog auth setup --helpmust answer: ifgogis missing or too old to knowauth setup, install it. On macOS:brew trust --formula openclaw/tap/gogcli && brew install openclaw/tap/gogcli(if an older gog fromsteipete/tapis there,brew uninstall gogclifirst; the accounts it saved stay). On Linux: thelinux_<arch>archive from https://github.com/openclaw/gogcli/releases, checked against itschecksums.txt, thengogin~/.local/bin. Thenjq --version. -
Pick the account: the argument, or the Google account signed in to Chrome AI (open
https://myaccount.google.comin a page namedconnect-googleand read the email). If Chrome AI is not signed in to Google, ask the user to sign in there and say "done". Ifgog auth list --check --json --no-inputalready lists that email, skip to step 9. -
If
gog auth credentials list --json --no-inputalready lists a client, skip to step 8. Otherwise find or create the Google Cloud project, in the pageconnect-google. Openhttps://console.cloud.google.com/cloud-resource-managerand look for a project namedgog CLI: reuse its ID. If there is none, openhttps://console.cloud.google.com/projectcreate, name itgog CLI, create it, wait for the notification, and read its ID (theproject=part of the address once it opens). On a first visit, Google Cloud asks for a country and its terms: ask the user before you accept. Read each page withsnapshotForAI()before clicking: the console speaks the user's language and moves its buttons. -
Turn on the Google services: open
https://console.cloud.google.com/flows/enableapi?apiid=gmail.googleapis.com,calendar-json.googleapis.com,drive.googleapis.com,docs.googleapis.com,sheets.googleapis.com,slides.googleapis.com,people.googleapis.com,tasks.googleapis.com&project=<id>and confirm. Wait until the page says they are on. -
Set up the sign-in screen: open
https://console.cloud.google.com/auth/overview?project=<id>. If it offers to get started, fill: app namegog CLI, support email = the account, audience External, contact email = the account, tick the Google API Services User Data Policy box, then create. If it is already set up, keep it as it is. -
Keep the access for good: open
https://console.cloud.google.com/auth/audience?project=<id>. If the status is "Testing", click "Publish app" and confirm. A Testing app loses Google access every 7 days; published, it keeps it (Google does not review a personal app, it only shows a warning when signing in). -
Create the key: open
https://console.cloud.google.com/auth/clients/create?project=<id>, type Desktop app, namegog CLI, create. In the same browser script, read the client ID and the secret from the dialog that opens and save them without logging them:await writeFile("gog-client.json", JSON.stringify({ installed: { client_id, client_secret, auth_uri: "https://accounts.google.com/o/oauth2/auth", token_uri: "https://oauth2.googleapis.com/token", redirect_uris: ["http://localhost"] } })); console.log(JSON.stringify({ saved: true, client_id_end: client_id.slice(-30) }));