[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6998BC1CC8QSEKKJSQ7VE1G":3,"skill-same:01M6998BC1CC8QSEKKJSQ7VE1G":193},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":38,"linkOnly":39,"markdownContent":40,"markdownBody":41,"frontMatter":42,"refName":46,"commitSha":47,"skillDirectory":48,"forksCount":49,"repositoryHtmlUrl":50,"repositoryHomepageUrl":6,"ownerHtmlUrl":51,"ownerBlogUrl":52,"ownerDescription":53,"updatedAt":54,"install":55,"resources":68},"01M6998BC1CC8QSEKKJSQ7VE1G","spanner-basics",null,"Assists in provisioning instances and databases, designing performant schemas, and querying data in Cloud Spanner on Google Cloud. Use when designing primary keys, writing SQL queries or client library code, or diagnosing performance issues.","google\u002Fskills","google","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F1342004?v=4","01M698VYEFDM0VJBZDYYJ2T83S","Google","01M698WR0H76ENHE587T9EJT89",23908,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fcloud\u002Fspanner-basics\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,9],"spanner basics","basics","provisioning","when","keys","client","instances","queries","sql queries","databases","use","writing","data","cloud","issues","code","sql","performance","google cloud","2026-11-10 10:12:30",false,"---\nname: spanner-basics\nmetadata:\n  version: \"1.1.2\"\n  category: Databases\ndescription: >-\n  Assists in provisioning instances and databases, designing performant schemas, and querying data in Cloud Spanner on Google Cloud. Use when designing primary keys, writing SQL queries or client library code, or diagnosing performance issues.\n---\n\n# Spanner Basics\n\nThis skill provides core workflows and guidance for administering and developing with Cloud Spanner on Google Cloud, a fully managed, mission-critical database service offering global transactional consistency and automatic, synchronous replication for high availability.\n\n## Attribution\n\n**MUST READ**: Before executing any `gcloud`, REST API, or MCP command, you\nMUST read [Usage Attribution](references\u002Fattribution.md). For commands executed\ndirectly in the terminal (never in generated scripts, Terraform, or user code),\nprefix `gcloud` with\n`CLOUDSDK_METRICS_REQUEST_ATTRIBUTION=\"agent-skills\u002F1.0 (skill:spanner-basics)\"`\nand append `agent-skills\u002F1.0 (skill:spanner-basics)` to `User-Agent` headers.\n\n## Core Principles\n\n-   **Performance First:** Spanner scales horizontally. Efficiency is tied to\n    Primary Key design. Always warn against using monotonically increasing\u002Fdecreasing\n    values (like sequential timestamps) as the first part of a primary key to avoid hotspots.\n-   **Schema Design:** Prefer interleaved tables for strongly related parent-child data\n    that is frequently accessed together.\n\n## Safety\n\n> [!CAUTION] **CRITICAL INSTRUCTION:** You MUST obtain explicit user confirmation before making any non-emulator database changes (DML or DDL) or destructive operations (such as dropping tables, indexes, or any other Spanner resources). Do not execute them automatically; instead, output the command (e.g., `gcloud spanner databases ddl update`) and ask for explicit user approval.\n> When database access is unavailable or authentication fails, do not block on trying to verify the existence of the instance, database, or table. Assume the provided resources exist and directly generate the DDL commands.\n\n## Common Workflows\n\n### Schema Evolution & DDL\n\n1.  Use `gcloud spanner databases ddl update` to apply schema updates (such as CREATE, ALTER, or DROP tables and indexes).\n2.  Reference [schema-design.md](references\u002Fschema-design.md) for guidelines on primary key selection and interleaved tables.\n\n### Diagnosing Performance Issues\n\n1.  Use `SPANNER_SYS` tables to identify slow or resource-intensive queries.\n2.  For example, query `SPANNER_SYS.QUERY_STATS_TOP_HOUR` to find queries with the highest CPU usage.\n\n## Reference Directory\n\n- [Core Concepts](references\u002Fcore-concepts.md): Explanation of Spanner internals, architecture, and design.\n- [CLI Usage](references\u002Fcli-usage.md): Essential `gcloud spanner` command-line operations for managing instances and databases.\n- [IAM Security](references\u002Fiam-security.md): Roles, permissions, and data governance best practices for Spanner.\n- [Client Library Usage](references\u002Fclient-library-usage.md): Using Google Cloud client libraries for Spanner (Java, Go, Python, Node.js).\n- [Terraform Usage](references\u002Fterraform-usage.md): Infrastructure as Code examples for provisioning Spanner instances and databases.\n- [MCP Usage](references\u002Fmcp-usage.md): Using the Spanner remote MCP server.\n- [PostgreSQL Dialect](references\u002Fpostgresql-dialect.md): Best practices and examples for using the PostgreSQL interface in Spanner.\n- [Queues Usage](references\u002Fqueues-usage.md): Cloud Spanner Queues: mental model, design constraints, and links related to transactional message queues.\n- [Schema Design](references\u002Fschema-design.md): Guidelines on primary key selection and interleaved tables for performance.\n\nIf you need product information that's not found in these references, use the\n`search_documents` tool of the Developer Knowledge MCP server.\n","# Spanner Basics\n\nThis skill provides core workflows and guidance for administering and developing with Cloud Spanner on Google Cloud, a fully managed, mission-critical database service offering global transactional consistency and automatic, synchronous replication for high availability.\n\n## Attribution\n\n**MUST READ**: Before executing any `gcloud`, REST API, or MCP command, you\nMUST read [Usage Attribution](references\u002Fattribution.md). For commands executed\ndirectly in the terminal (never in generated scripts, Terraform, or user code),\nprefix `gcloud` with\n`CLOUDSDK_METRICS_REQUEST_ATTRIBUTION=\"agent-skills\u002F1.0 (skill:spanner-basics)\"`\nand append `agent-skills\u002F1.0 (skill:spanner-basics)` to `User-Agent` headers.\n\n## Core Principles\n\n-   **Performance First:** Spanner scales horizontally. Efficiency is tied to\n    Primary Key design. Always warn against using monotonically increasing\u002Fdecreasing\n    values (like sequential timestamps) as the first part of a primary key to avoid hotspots.\n-   **Schema Design:** Prefer interleaved tables for strongly related parent-child data\n    that is frequently accessed together.\n\n## Safety\n\n> [!CAUTION] **CRITICAL INSTRUCTION:** You MUST obtain explicit user confirmation before making any non-emulator database changes (DML or DDL) or destructive operations (such as dropping tables, indexes, or any other Spanner resources). Do not execute them automatically; instead, output the command (e.g., `gcloud spanner databases ddl update`) and ask for explicit user approval.\n> When database access is unavailable or authentication fails, do not block on trying to verify the existence of the instance, database, or table. Assume the provided resources exist and directly generate the DDL commands.\n\n## Common Workflows\n\n### Schema Evolution & DDL\n\n1.  Use `gcloud spanner databases ddl update` to apply schema updates (such as CREATE, ALTER, or DROP tables and indexes).\n2.  Reference [schema-design.md](references\u002Fschema-design.md) for guidelines on primary key selection and interleaved tables.\n\n### Diagnosing Performance Issues\n\n1.  Use `SPANNER_SYS` tables to identify slow or resource-intensive queries.\n2.  For example, query `SPANNER_SYS.QUERY_STATS_TOP_HOUR` to find queries with the highest CPU usage.\n\n## Reference Directory\n\n- [Core Concepts](references\u002Fcore-concepts.md): Explanation of Spanner internals, architecture, and design.\n- [CLI Usage](references\u002Fcli-usage.md): Essential `gcloud spanner` command-line operations for managing instances and databases.\n- [IAM Security](references\u002Fiam-security.md): Roles, permissions, and data governance best practices for Spanner.\n- [Client Library Usage](references\u002Fclient-library-usage.md): Using Google Cloud client libraries for Spanner (Java, Go, Python, Node.js).\n- [Terraform Usage](references\u002Fterraform-usage.md): Infrastructure as Code examples for provisioning Spanner instances and databases.\n- [MCP Usage](references\u002Fmcp-usage.md): Using the Spanner remote MCP server.\n- [PostgreSQL Dialect](references\u002Fpostgresql-dialect.md): Best practices and examples for using the PostgreSQL interface in Spanner.\n- [Queues Usage](references\u002Fqueues-usage.md): Cloud Spanner Queues: mental model, design constraints, and links related to transactional message queues.\n- [Schema Design](references\u002Fschema-design.md): Guidelines on primary key selection and interleaved tables for performance.\n\nIf you need product information that's not found in these references, use the\n`search_documents` tool of the Developer Knowledge MCP server.\n",{"name":5,"metadata":43,"description":7},{"version":44,"category":45},"1.1.2","Databases","main","bb9b3f464aae37af360d079c1d863524955b0363","skills\u002Fcloud\u002Fspanner-basics",1994,"https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fskills","https:\u002F\u002Fgithub.com\u002Fgoogle","https:\u002F\u002Fopensource.google\u002F","Google ❤️ Open Source","2026-11-12 00:37:41",{"source":8,"skillName":5,"commands":56,"prompt":66,"zipAvailable":67},[57,60,63],{"tool":58,"command":59},"npx","npx skills add google\u002Fskills --skill spanner-basics",{"tool":61,"command":62},"bunx","bunx skills add google\u002Fskills --skill spanner-basics",{"tool":64,"command":65},"pnpm","pnpm dlx skills add google\u002Fskills --skill spanner-basics","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fcloud\u002Fspanner-basics\u002FSKILL.md",true,[69,75,79,83,87,91,95,99,103,107,111,115,119,123,129,133,137,141,145,149,153,157,161,165,169,173,177,181,185,189],{"path":70,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":73,"sourceHtmlUrl":74},"references\u002Fattribution.md","REFERENCE","参考文档",1882,"https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fcloud\u002Fspanner-basics\u002Freferences\u002Fattribution.md",{"path":76,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":77,"sourceHtmlUrl":78},"references\u002Fcdp-domains.md",17812,"https:\u002F\u002Fgithub.com\u002Ffel-tte\u002Frobot-forex\u002Fblob\u002Fmain\u002Fclaude-super-kit\u002F.claude\u002Fskills\u002Fchrome-devtools\u002Freferences\u002Fcdp-domains.md",{"path":80,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":81,"sourceHtmlUrl":82},"references\u002Fcli-usage.md",1283,"https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fcloud\u002Fspanner-basics\u002Freferences\u002Fcli-usage.md",{"path":84,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":85,"sourceHtmlUrl":86},"references\u002Fclient-library-usage.md",3591,"https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fcloud\u002Fspanner-basics\u002Freferences\u002Fclient-library-usage.md",{"path":88,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":89,"sourceHtmlUrl":90},"references\u002Fcore-concepts.md",1164,"https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fcloud\u002Fspanner-basics\u002Freferences\u002Fcore-concepts.md",{"path":92,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":93,"sourceHtmlUrl":94},"references\u002Fiam-security.md",1223,"https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fcloud\u002Fspanner-basics\u002Freferences\u002Fiam-security.md",{"path":96,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":97,"sourceHtmlUrl":98},"references\u002Fmcp-usage.md",1573,"https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fcloud\u002Fspanner-basics\u002Freferences\u002Fmcp-usage.md",{"path":100,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":101,"sourceHtmlUrl":102},"references\u002Fperformance-guide.md",21550,"https:\u002F\u002Fgithub.com\u002Ffel-tte\u002Frobot-forex\u002Fblob\u002Fmain\u002Fclaude-super-kit\u002F.claude\u002Fskills\u002Fchrome-devtools\u002Freferences\u002Fperformance-guide.md",{"path":104,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":105,"sourceHtmlUrl":106},"references\u002Fpostgresql-dialect.md",951,"https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fcloud\u002Fspanner-basics\u002Freferences\u002Fpostgresql-dialect.md",{"path":108,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":109,"sourceHtmlUrl":110},"references\u002Fpuppeteer-reference.md",19065,"https:\u002F\u002Fgithub.com\u002Ffel-tte\u002Frobot-forex\u002Fblob\u002Fmain\u002Fclaude-super-kit\u002F.claude\u002Fskills\u002Fchrome-devtools\u002Freferences\u002Fpuppeteer-reference.md",{"path":112,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":113,"sourceHtmlUrl":114},"references\u002Fqueues-usage.md",11097,"https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fcloud\u002Fspanner-basics\u002Freferences\u002Fqueues-usage.md",{"path":116,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":117,"sourceHtmlUrl":118},"references\u002Fschema-design.md",3483,"https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fcloud\u002Fspanner-basics\u002Freferences\u002Fschema-design.md",{"path":120,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":121,"sourceHtmlUrl":122},"references\u002Fterraform-usage.md",928,"https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fcloud\u002Fspanner-basics\u002Freferences\u002Fterraform-usage.md",{"path":124,"resourceType":125,"resourceTypeDesc":126,"sizeBytes":127,"sourceHtmlUrl":128},"scripts\u002F__tests__\u002Fselector.test.js","SCRIPT","脚本",6525,"https:\u002F\u002Fgithub.com\u002Ffel-tte\u002Frobot-forex\u002Fblob\u002Fmain\u002Fclaude-super-kit\u002F.claude\u002Fskills\u002Fchrome-devtools\u002Fscripts\u002F__tests__\u002Fselector.test.js",{"path":130,"resourceType":125,"resourceTypeDesc":126,"sizeBytes":131,"sourceHtmlUrl":132},"scripts\u002F.gitignore",12,"https:\u002F\u002Fgithub.com\u002Ffel-tte\u002Frobot-forex\u002Fblob\u002Fmain\u002Fclaude-super-kit\u002F.claude\u002Fskills\u002Fchrome-devtools\u002Fscripts\u002F.gitignore",{"path":134,"resourceType":125,"resourceTypeDesc":126,"sizeBytes":135,"sourceHtmlUrl":136},"scripts\u002Fclick.js",2239,"https:\u002F\u002Fgithub.com\u002Ffel-tte\u002Frobot-forex\u002Fblob\u002Fmain\u002Fclaude-super-kit\u002F.claude\u002Fskills\u002Fchrome-devtools\u002Fscripts\u002Fclick.js",{"path":138,"resourceType":125,"resourceTypeDesc":126,"sizeBytes":139,"sourceHtmlUrl":140},"scripts\u002Fconsole.js",1746,"https:\u002F\u002Fgithub.com\u002Ffel-tte\u002Frobot-forex\u002Fblob\u002Fmain\u002Fclaude-super-kit\u002F.claude\u002Fskills\u002Fchrome-devtools\u002Fscripts\u002Fconsole.js",{"path":142,"resourceType":125,"resourceTypeDesc":126,"sizeBytes":143,"sourceHtmlUrl":144},"scripts\u002Fevaluate.js",1088,"https:\u002F\u002Fgithub.com\u002Ffel-tte\u002Frobot-forex\u002Fblob\u002Fmain\u002Fclaude-super-kit\u002F.claude\u002Fskills\u002Fchrome-devtools\u002Fscripts\u002Fevaluate.js",{"path":146,"resourceType":125,"resourceTypeDesc":126,"sizeBytes":147,"sourceHtmlUrl":148},"scripts\u002Ffill.js",1904,"https:\u002F\u002Fgithub.com\u002Ffel-tte\u002Frobot-forex\u002Fblob\u002Fmain\u002Fclaude-super-kit\u002F.claude\u002Fskills\u002Fchrome-devtools\u002Fscripts\u002Ffill.js",{"path":150,"resourceType":125,"resourceTypeDesc":126,"sizeBytes":151,"sourceHtmlUrl":152},"scripts\u002Finstall-deps.sh",4371,"https:\u002F\u002Fgithub.com\u002Ffel-tte\u002Frobot-forex\u002Fblob\u002Fmain\u002Fclaude-super-kit\u002F.claude\u002Fskills\u002Fchrome-devtools\u002Fscripts\u002Finstall-deps.sh",{"path":154,"resourceType":125,"resourceTypeDesc":126,"sizeBytes":155,"sourceHtmlUrl":156},"scripts\u002Finstall.sh",2137,"https:\u002F\u002Fgithub.com\u002Ffel-tte\u002Frobot-forex\u002Fblob\u002Fmain\u002Fclaude-super-kit\u002F.claude\u002Fskills\u002Fchrome-devtools\u002Fscripts\u002Finstall.sh",{"path":158,"resourceType":125,"resourceTypeDesc":126,"sizeBytes":159,"sourceHtmlUrl":160},"scripts\u002Flib\u002Fbrowser.js",2465,"https:\u002F\u002Fgithub.com\u002Ffel-tte\u002Frobot-forex\u002Fblob\u002Fmain\u002Fclaude-super-kit\u002F.claude\u002Fskills\u002Fchrome-devtools\u002Fscripts\u002Flib\u002Fbrowser.js",{"path":162,"resourceType":125,"resourceTypeDesc":126,"sizeBytes":163,"sourceHtmlUrl":164},"scripts\u002Flib\u002Fselector.js",5422,"https:\u002F\u002Fgithub.com\u002Ffel-tte\u002Frobot-forex\u002Fblob\u002Fmain\u002Fclaude-super-kit\u002F.claude\u002Fskills\u002Fchrome-devtools\u002Fscripts\u002Flib\u002Fselector.js",{"path":166,"resourceType":125,"resourceTypeDesc":126,"sizeBytes":167,"sourceHtmlUrl":168},"scripts\u002Fnavigate.js",994,"https:\u002F\u002Fgithub.com\u002Ffel-tte\u002Frobot-forex\u002Fblob\u002Fmain\u002Fclaude-super-kit\u002F.claude\u002Fskills\u002Fchrome-devtools\u002Fscripts\u002Fnavigate.js",{"path":170,"resourceType":125,"resourceTypeDesc":126,"sizeBytes":171,"sourceHtmlUrl":172},"scripts\u002Fnetwork.js",2727,"https:\u002F\u002Fgithub.com\u002Ffel-tte\u002Frobot-forex\u002Fblob\u002Fmain\u002Fclaude-super-kit\u002F.claude\u002Fskills\u002Fchrome-devtools\u002Fscripts\u002Fnetwork.js",{"path":174,"resourceType":125,"resourceTypeDesc":126,"sizeBytes":175,"sourceHtmlUrl":176},"scripts\u002Fpackage.json",321,"https:\u002F\u002Fgithub.com\u002Ffel-tte\u002Frobot-forex\u002Fblob\u002Fmain\u002Fclaude-super-kit\u002F.claude\u002Fskills\u002Fchrome-devtools\u002Fscripts\u002Fpackage.json",{"path":178,"resourceType":125,"resourceTypeDesc":126,"sizeBytes":179,"sourceHtmlUrl":180},"scripts\u002Fperformance.js",3875,"https:\u002F\u002Fgithub.com\u002Ffel-tte\u002Frobot-forex\u002Fblob\u002Fmain\u002Fclaude-super-kit\u002F.claude\u002Fskills\u002Fchrome-devtools\u002Fscripts\u002Fperformance.js",{"path":182,"resourceType":125,"resourceTypeDesc":126,"sizeBytes":183,"sourceHtmlUrl":184},"scripts\u002FREADME.md",5318,"https:\u002F\u002Fgithub.com\u002Ffel-tte\u002Frobot-forex\u002Fblob\u002Fmain\u002Fclaude-super-kit\u002F.claude\u002Fskills\u002Fchrome-devtools\u002Fscripts\u002FREADME.md",{"path":186,"resourceType":125,"resourceTypeDesc":126,"sizeBytes":187,"sourceHtmlUrl":188},"scripts\u002Fscreenshot.js",6000,"https:\u002F\u002Fgithub.com\u002Ffel-tte\u002Frobot-forex\u002Fblob\u002Fmain\u002Fclaude-super-kit\u002F.claude\u002Fskills\u002Fchrome-devtools\u002Fscripts\u002Fscreenshot.js",{"path":190,"resourceType":125,"resourceTypeDesc":126,"sizeBytes":191,"sourceHtmlUrl":192},"scripts\u002Fsnapshot.js",3518,"https:\u002F\u002Fgithub.com\u002Ffel-tte\u002Frobot-forex\u002Fblob\u002Fmain\u002Fclaude-super-kit\u002F.claude\u002Fskills\u002Fchrome-devtools\u002Fscripts\u002Fsnapshot.js",[194,231,261,290,316,340],{"skillNo":195,"name":196,"nameZh":6,"description":197,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":198,"categories":199,"keywords":208,"publishedAt":38},"01M6998S2EZKD3GEJ7F943RZTE","sign-in-with-google-web","Implement, configure, and secure Sign In With Google (SiwG) using Google Identity Services (GIS \u002F `https:\u002F\u002Faccounts.google.com\u002Fgsi\u002Fclient`) across web architectures. Use when creating Google sign-in buttons, implementing Google One Tap with FedCM, integrating GIS in React\u002FNext.js\u002FAngular\u002FHTML, verifying ID tokens on backend runtimes (Python\u002FNode.js\u002FGo\u002FJava), enforcing Google Workspace domain restrictions (`hd`), securing client-side ID tokens via WebCrypto nonces or encrypted IndexedDB, embedding in cross-origin iframes via the Intermediate Iframe API (`https:\u002F\u002Faccounts.google.com\u002Fgsi\u002Fintermediate`), configuring Content Security Policy (CSP), COOP, and Permissions Policy (`identity-credentials-get`) headers, or handling sign-out and revocation. Don't use for legacy Google Sign-In (`gapi.auth2`), Google Cloud IAM service accounts, or Android\u002FiOS native Credential Manager.","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fidentity\u002Fsign-in-with-google-web\u002FSKILL.md",[200,205],{"categoryNo":201,"categoryName":202,"taxonomyType":203,"taxonomyTypeDesc":204},"01JBSEEDCAT000000000000009","前端开发","SCENARIO","使用场景",{"categoryNo":206,"categoryName":207,"taxonomyType":203,"taxonomyTypeDesc":204},"01JBSEEDCAT000000000000010","后端与接口",[9,209,210,211,212,213,214,215,216,37,217,218,219,220,221,222,223,224,225,226,227,228,229,230],"sign in with google web","sign","with","web","android","go","security","google workspace","implement","policy","python","implementing","react","iam","permissions","buttons","secure","manager","identity","architectures","domain","runtimes",{"skillNo":232,"name":233,"nameZh":6,"description":234,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":235,"categories":236,"keywords":246,"publishedAt":38},"01M6998PHPDCAD684VW5WRG83D","dpop-adoption","Implement and debug OAuth 2.0 DPoP (RFC 9449) refresh token sender-constraining for WebCrypto, Node.js ES6, and browser runtimes integrating with Google's OAuth platform. Use when configuring non-extractable asymmetric key pairs (P-256), generating DPoP Proof JWTs for authorization code exchange and token refresh, or handling 400 use_dpop_nonce challenge retry loops at oauth2.googleapis.com\u002Ftoken. Don't use for unconstrained OAuth 2.0 flows (where refresh tokens are not bound to a client key pair), or for Google Cloud IAM \u002F service account authentication.","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fidentity\u002Fdpop-adoption\u002FSKILL.md",[237,238,241],{"categoryNo":206,"categoryName":207,"taxonomyType":203,"taxonomyTypeDesc":204},{"categoryNo":239,"categoryName":240,"taxonomyType":203,"taxonomyTypeDesc":204},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":242,"categoryName":243,"taxonomyType":244,"taxonomyTypeDesc":245},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[247,248,9,37,249,250,251,252,253,34,222,254,255,256,257,258,259,227,230,260,22],"dpop adoption","adoption","es6","retry","authentication","flows","challenge","browser","loops","at","node","token","pair","platform",{"skillNo":262,"name":263,"nameZh":6,"description":264,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":265,"categories":266,"keywords":273,"publishedAt":38},"01M6998M72TC73EEAQH4XC7EXW","retrieving-developer-knowledge","Searches, retrieves, and synthesizes official Google developer documentation across Google Cloud, AI\u002FGemini, Android, Chrome, Web, Flutter, Go, Firebase, and other Google developer platforms. Integrates with the Developer Knowledge MCP server (search_documents, get_documents, answer_query) or the Developer Knowledge REST API fallback. Use when searching for gcloud CLI commands, API syntax, IAM permissions, official documentation, architectural comparisons, or product choice overviews. Don't use for local filesystem lookups or non-Google documentation.","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fdevelopers\u002Fretrieving-developer-knowledge\u002FSKILL.md",[267,268,271,272],{"categoryNo":206,"categoryName":207,"taxonomyType":203,"taxonomyTypeDesc":204},{"categoryNo":269,"categoryName":270,"taxonomyType":203,"taxonomyTypeDesc":204},"01JBSEEDCAT000000000000021","资料检索与研究",{"categoryNo":239,"categoryName":240,"taxonomyType":203,"taxonomyTypeDesc":204},{"categoryNo":242,"categoryName":243,"taxonomyType":244,"taxonomyTypeDesc":245},[274,275,276,277,37,278,279,280,281,282,283,284,285,22,286,287,288,222,289,223],"retrieving developer knowledge","knowledge","developer","MCP","mcp server","official","developer documentation","get","search","local","choice","documents","query","api","across","documentation",{"skillNo":291,"name":292,"nameZh":6,"description":293,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":294,"categories":295,"keywords":296,"publishedAt":38},"01M6998J2CZEXS9BES9S3WWFKC","migrate-to-rust","Clones, analyzes, plans, and migrates legacy codebases (C++, Fortran, Java, Python, C, Shell) from a GitHub URL or local directory to a modern, high-performance, deterministic, 100% Safe Rust architecture, tracking live telemetry across every task bucket, test failure\u002Ffix cycle, and Profile-Guided Optimization (PGO) stage, and producing a first-person AI storytelling report and interactive HTML infographic. Use when migrating a GitHub repository or local codebase to Rust, porting legacy C++, Fortran, Python, or Java workloads to memory-safe Rust, designing Struct-of-Arrays (SoA) or SIMD Rust architectures, or optimizing Rust ports with LLVM PGO. Don't use for unrelated non-Rust refactoring or single-line syntax questions.","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fdevelopers\u002Fmigrate-to-rust\u002FSKILL.md",[],[297,298,299,300,301,36,302,303,219,304,305,306,307,308,309,283,310,311,312,22,313,314,288,315],"migrate to rust","rust","migrate","github","memory","directory","safe","ports","llvm","soa","cycle","porting","fix","arrays","infographic","high-performance","URL","architecture","unrelated",{"skillNo":317,"name":318,"nameZh":6,"description":319,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":320,"categories":321,"keywords":325,"publishedAt":38},"01M6998GCC3K29WZ82KXMB9E02","finding-google-skills","Google platform decision and setup guidance, loaded on demand from Google's skill catalog. Use when a developer is choosing or setting up part of their stack, such as where to run a service, a database, storage, messaging, authentication, analytics, ads, or AI model serving, and a Google product is a reasonable candidate - whether or not a vendor is named - or when a request names a Google product or API. Brings in the matching Google skill so the answer can weigh Google options, their trade-offs, and when they are not the right fit. Skip when the stack is already settled on another provider and no Google product is named, or the task involves no platform choice.","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fdevelopers\u002Ffinding-google-skills\u002FSKILL.md",[322,323,324],{"categoryNo":206,"categoryName":207,"taxonomyType":203,"taxonomyTypeDesc":204},{"categoryNo":239,"categoryName":240,"taxonomyType":203,"taxonomyTypeDesc":204},{"categoryNo":242,"categoryName":243,"taxonomyType":244,"taxonomyTypeDesc":245},[9,326,327,328,329,260,330,331,332,333,334,251,335,336,337,284,29,338,22,339,287],"finding google skills","storage","as","messaging","model","trade-offs","provider","answer","fit","catalog","up","decision","database","candidate",{"skillNo":341,"name":342,"nameZh":6,"description":343,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":344,"categories":345,"keywords":348,"publishedAt":38},"01M6998DWNHTH0BS6W1CY8ZXMP","workload-manager-basics","Use this skill to manage Google Cloud Workload Manager evaluations, rules, scanned resources, and validation results by using public client libraries and the REST API. Use when you need to inspect workload best-practice rules, create and run evaluations for Google Cloud general best practices, SAP, SQL Server, or custom organizational rules, review violations, export results to BigQuery, or automate Workload Manager through client libraries because no service-specific public CLI or MCP server is available. Don't use for general Google Compute Engine instance management, VPC configuration, or standard IAM auditing.","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fcloud\u002Fworkload-manager-basics\u002FSKILL.md",[346,347],{"categoryNo":206,"categoryName":207,"taxonomyType":203,"taxonomyTypeDesc":204},{"categoryNo":239,"categoryName":240,"taxonomyType":203,"taxonomyTypeDesc":204},[349,350,226,20,9,277,351,37,278,352,353,354,355,22,356,287,222,357,358,359,360],"workload manager basics","workload","cli","review","vpc","resources","inspect","you","create","libraries","server","run"]