Summary
On the Skills page, the bundled Google skills (google-calendar, google-docs, google-drive, google-forms, google-gmail, google-meet, google-sheets) all show a needs setup badge even when gws is installed and authenticated (gws auth status reports an authenticated user, and the skills work from chat). The status badge does not reflect the real auth state.

Steps to reproduce
- Authenticate
gws (e.g. via gws auth login) so gws auth status reports a valid user and Google skills function in chat.
- Open the Skills page.
- Every
google-* skill still shows the amber needs setup badge.
Expected
A Google skill should show active when gws is actually authenticated for the required scopes, matching what the agent loop can really do.
Likely cause
The badge is computed by deriveActivation() in web/src/app/skills/page.tsx:618-643, which derives status purely from the google-oauth-desktop connector record declared in each skill's requires.connectors (skills/google/*/SKILL.md, e.g. google-docs/SKILL.md:16-18). It marks a skill needs setup unless a connector for that provider has status === "configured".
google-oauth-desktop has no probe (src/integrations/connectors/google-oauth-desktop.ts:11-14) — the comment notes the real validation is gws auth login. But the page never consults gws auth status; it only checks whether the OAuth-client-credentials connector record is configured in Gini's state. So a user who authenticated gws (the functional source of truth) without a configured google-oauth-desktop connector record — or whose record isn't in status: configured — sees needs setup even though the skill works.
In short: status reflects connector-record presence, not real gws auth state. The displayed badge and actual capability have diverged.
Notes
- Activation gate:
web/src/app/skills/page.tsx:618-643
- Connector provider (no probe):
src/integrations/connectors/google-oauth-desktop.ts
- Skill requirement:
skills/google/<name>/SKILL.md requires.connectors: [{ provider: google-oauth-desktop }]
- Real auth signal that should feed the badge:
gws auth status
Summary
On the Skills page, the bundled Google skills (
google-calendar,google-docs,google-drive,google-forms,google-gmail,google-meet,google-sheets) all show a needs setup badge even whengwsis installed and authenticated (gws auth statusreports an authenticated user, and the skills work from chat). The status badge does not reflect the real auth state.Steps to reproduce
gws(e.g. viagws auth login) sogws auth statusreports a valid user and Google skills function in chat.google-*skill still shows the amber needs setup badge.Expected
A Google skill should show active when
gwsis actually authenticated for the required scopes, matching what the agent loop can really do.Likely cause
The badge is computed by
deriveActivation()inweb/src/app/skills/page.tsx:618-643, which derives status purely from thegoogle-oauth-desktopconnector record declared in each skill'srequires.connectors(skills/google/*/SKILL.md, e.g.google-docs/SKILL.md:16-18). It marks a skillneeds setupunless a connector for that provider hasstatus === "configured".google-oauth-desktophas no probe (src/integrations/connectors/google-oauth-desktop.ts:11-14) — the comment notes the real validation isgws auth login. But the page never consultsgws auth status; it only checks whether the OAuth-client-credentials connector record is configured in Gini's state. So a user who authenticatedgws(the functional source of truth) without a configuredgoogle-oauth-desktopconnector record — or whose record isn't instatus: configured— sees needs setup even though the skill works.In short: status reflects connector-record presence, not real
gwsauth state. The displayed badge and actual capability have diverged.Notes
web/src/app/skills/page.tsx:618-643src/integrations/connectors/google-oauth-desktop.tsskills/google/<name>/SKILL.mdrequires.connectors: [{ provider: google-oauth-desktop }]gws auth status