[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M698YKYFAEM01DNC3HVMYCQJ":3,"skill-same:01M698YKYFAEM01DNC3HVMYCQJ":121},{"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":28,"publishedAt":50,"linkOnly":51,"markdownContent":52,"markdownBody":53,"frontMatter":54,"refName":55,"commitSha":56,"skillDirectory":57,"forksCount":58,"repositoryHtmlUrl":59,"repositoryHomepageUrl":60,"ownerHtmlUrl":61,"ownerBlogUrl":62,"ownerDescription":63,"updatedAt":64,"install":65,"resources":78},"01M698YKYFAEM01DNC3HVMYCQJ","adk-style",null,"Python style and codebase conventions for ADK (Agent Development Kit): private-by-default file visibility, imports, type hints, Pydantic v2 models, formatting, docstrings, logging, async I\u002FO, file and test layout, and unit test structure. Use when writing or editing ADK source or tests, deciding whether a new file or symbol should be public or private, naming or placing a test file, fixing a formatter, linter, or type-check failure (pyink, isort, ruff, mypy, addlicense, compliance-checks), or asking whether code matches house style. Don't use for reviewing a whole changeset (use adk-review), writing a developer guide or design doc for a code unit (use adk-unit-guide or adk-unit-design), building or configuring agents (use adk-agent-builder), or installing the toolchain (use adk-setup).","google\u002Fadk-python","google","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F1342004?v=4","01M698VYEFDM0VJBZDYYJ2T83S","Google","01M698XZC2HCATT8VD5VAVZDTP",22203,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-python\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fadk-style\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49],"adk","style","adk style","changeset","when","Pydantic","design doc","imports","structure","code","kit","default","linter","agent development kit","unit","unit test","agent development","builder","review","writing","design","2026-11-10 10:12:30",false,"---\nname: adk-style\ndescription: >-\n  Python style and codebase conventions for ADK (Agent Development Kit):\n  private-by-default file visibility, imports, type hints, Pydantic v2 models,\n  formatting, docstrings, logging, async I\u002FO, file and test layout, and unit\n  test structure. Use when writing or editing ADK source or tests, deciding\n  whether a new file or symbol should be public or private, naming or placing\n  a test file, fixing a formatter, linter, or type-check failure (pyink,\n  isort, ruff, mypy, addlicense, compliance-checks), or asking whether code\n  matches house style. Don't use for reviewing a whole changeset (use\n  adk-review), writing a developer guide or design doc for a code unit (use\n  adk-unit-guide or adk-unit-design), building or configuring agents (use\n  adk-agent-builder), or installing the toolchain (use adk-setup).\n---\n\n# ADK Style Guide\n\nConventions for `src\u002Fgoogle\u002Fadk\u002F` and `tests\u002Funittests\u002F`. Most are enforced by\na pre-commit hook or a CI job, so a violation blocks the PR rather than\nsurfacing in review. Read the one reference for the topic you are touching.\n\n## Pick a reference\n\n| Task | Reference |\n| --- | --- |\n| Adding a `.py` file; deciding public vs private; `__init__.py` and `__all__` | [visibility.md](references\u002Fvisibility.md) |\n| Writing `import` lines; relative vs absolute; circular imports; `TYPE_CHECKING`; lazy imports | [imports.md](references\u002Fimports.md) |\n| Annotating args and returns; `AgentMode` vs raw mode strings; `_NodePathBuilder`, `_BranchPath`, and `build_node`; `X \\| None` and `X \\| Y` instead of `Optional` and `Union`; keyword-only args; `isinstance`; asserts; mypy; `# type: ignore` and `cast` | [typing.md](references\u002Ftyping.md) |\n| Defining a Pydantic model, validator, private attribute, or on-wire payload | [pydantic.md](references\u002Fpydantic.md) |\n| Indentation, line length, quotes; running the formatter; what each hook checks | [formatting.md](references\u002Fformatting.md) |\n| Writing a docstring or an explanatory comment | [documentation.md](references\u002Fdocumentation.md) |\n| Emitting a log record; naming the module logger; picking a level | [logging.md](references\u002Flogging.md) |\n| Anything that performs I\u002FO — network, disk, database | [async.md](references\u002Fasync.md) |\n| Where a new file goes; license header; where its test goes and what to call it | [file-organization.md](references\u002Ffile-organization.md) |\n| Writing or restructuring a unit test; the `testing_utils` fakes | [testing.md](references\u002Ftesting.md) |\n\n## A check failed — where to look\n\n| Failing check | Reference |\n| --- | --- |\n| `check-new-py-prefix` | [visibility.md](references\u002Fvisibility.md) |\n| `compliance-checks` | [logging.md](references\u002Flogging.md) (logger name), [typing.md](references\u002Ftyping.md) (`from __future__ import annotations`), [imports.md](references\u002Fimports.md) (`cli\u002F` import direction) |\n| `pyink`, `isort`, `ruff`, `addlicense`, `codespell` | [formatting.md](references\u002Fformatting.md) |\n| Mypy Check CI job | [typing.md](references\u002Ftyping.md) |\n| `tests\u002Funittests\u002Ftest_import_loading.py` | [imports.md](references\u002Fimports.md) |\n","# ADK Style Guide\n\nConventions for `src\u002Fgoogle\u002Fadk\u002F` and `tests\u002Funittests\u002F`. Most are enforced by\na pre-commit hook or a CI job, so a violation blocks the PR rather than\nsurfacing in review. Read the one reference for the topic you are touching.\n\n## Pick a reference\n\n| Task | Reference |\n| --- | --- |\n| Adding a `.py` file; deciding public vs private; `__init__.py` and `__all__` | [visibility.md](references\u002Fvisibility.md) |\n| Writing `import` lines; relative vs absolute; circular imports; `TYPE_CHECKING`; lazy imports | [imports.md](references\u002Fimports.md) |\n| Annotating args and returns; `AgentMode` vs raw mode strings; `_NodePathBuilder`, `_BranchPath`, and `build_node`; `X \\| None` and `X \\| Y` instead of `Optional` and `Union`; keyword-only args; `isinstance`; asserts; mypy; `# type: ignore` and `cast` | [typing.md](references\u002Ftyping.md) |\n| Defining a Pydantic model, validator, private attribute, or on-wire payload | [pydantic.md](references\u002Fpydantic.md) |\n| Indentation, line length, quotes; running the formatter; what each hook checks | [formatting.md](references\u002Fformatting.md) |\n| Writing a docstring or an explanatory comment | [documentation.md](references\u002Fdocumentation.md) |\n| Emitting a log record; naming the module logger; picking a level | [logging.md](references\u002Flogging.md) |\n| Anything that performs I\u002FO — network, disk, database | [async.md](references\u002Fasync.md) |\n| Where a new file goes; license header; where its test goes and what to call it | [file-organization.md](references\u002Ffile-organization.md) |\n| Writing or restructuring a unit test; the `testing_utils` fakes | [testing.md](references\u002Ftesting.md) |\n\n## A check failed — where to look\n\n| Failing check | Reference |\n| --- | --- |\n| `check-new-py-prefix` | [visibility.md](references\u002Fvisibility.md) |\n| `compliance-checks` | [logging.md](references\u002Flogging.md) (logger name), [typing.md](references\u002Ftyping.md) (`from __future__ import annotations`), [imports.md](references\u002Fimports.md) (`cli\u002F` import direction) |\n| `pyink`, `isort`, `ruff`, `addlicense`, `codespell` | [formatting.md](references\u002Fformatting.md) |\n| Mypy Check CI job | [typing.md](references\u002Ftyping.md) |\n| `tests\u002Funittests\u002Ftest_import_loading.py` | [imports.md](references\u002Fimports.md) |\n",{"name":5,"description":7},"main","74143085e9ec53f179f613f8f5fc01a14a8acf77",".agents\u002Fskills\u002Fadk-style",4355,"https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-python","https:\u002F\u002Fgoogle.github.io\u002Fadk-docs\u002F","https:\u002F\u002Fgithub.com\u002Fgoogle","https:\u002F\u002Fopensource.google\u002F","Google ❤️ Open Source","2026-11-14 01:11:23",{"source":8,"skillName":5,"commands":66,"prompt":76,"zipAvailable":77},[67,70,73],{"tool":68,"command":69},"npx","npx skills add google\u002Fadk-python --skill adk-style",{"tool":71,"command":72},"bunx","bunx skills add google\u002Fadk-python --skill adk-style",{"tool":74,"command":75},"pnpm","pnpm dlx skills add google\u002Fadk-python --skill adk-style","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-python\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fadk-style\u002FSKILL.md",true,[79,85,89,93,97,101,105,109,113,117],{"path":80,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":83,"sourceHtmlUrl":84},"references\u002Fasync.md","REFERENCE","参考文档",880,"https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-python\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fadk-style\u002Freferences\u002Fasync.md",{"path":86,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":87,"sourceHtmlUrl":88},"references\u002Fdocumentation.md",1108,"https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-python\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fadk-style\u002Freferences\u002Fdocumentation.md",{"path":90,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":91,"sourceHtmlUrl":92},"references\u002Ffile-organization.md",1137,"https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-python\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fadk-style\u002Freferences\u002Ffile-organization.md",{"path":94,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":95,"sourceHtmlUrl":96},"references\u002Fformatting.md",2571,"https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-python\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fadk-style\u002Freferences\u002Fformatting.md",{"path":98,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":99,"sourceHtmlUrl":100},"references\u002Fimports.md",3149,"https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-python\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fadk-style\u002Freferences\u002Fimports.md",{"path":102,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":103,"sourceHtmlUrl":104},"references\u002Flogging.md",1210,"https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-python\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fadk-style\u002Freferences\u002Flogging.md",{"path":106,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":107,"sourceHtmlUrl":108},"references\u002Fpydantic.md",5329,"https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-python\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fadk-style\u002Freferences\u002Fpydantic.md",{"path":110,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":111,"sourceHtmlUrl":112},"references\u002Ftesting.md",9975,"https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-python\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fadk-style\u002Freferences\u002Ftesting.md",{"path":114,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":115,"sourceHtmlUrl":116},"references\u002Ftyping.md",8564,"https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-python\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fadk-style\u002Freferences\u002Ftyping.md",{"path":118,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":119,"sourceHtmlUrl":120},"references\u002Fvisibility.md",3388,"https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-python\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fadk-style\u002Freferences\u002Fvisibility.md",[122,153,180,204,220,228],{"skillNo":123,"name":124,"nameZh":6,"description":125,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":126,"categories":127,"keywords":134,"publishedAt":50},"01M698ZJNXJCE7T81AK0Y5R01D","bigquery-graph","Skill for Graph Query Language (GQL) or SQL\u002FPGQ queries against a property graph.\nIncludes path finding, multi-hop traversal, topological connection, shortest path,\nnode reachability, edge connectivity, and semantic graph queries.","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-python\u002Fblob\u002Fmain\u002Fsrc\u002Fgoogle\u002Fadk\u002Fintegrations\u002Fbigquery\u002Fskills\u002Fbigquery-graph\u002FSKILL.md",[128,131],{"categoryNo":129,"categoryName":130,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":132,"categoryName":133,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000033","数据分析师",[135,136,137,9,138,29,139,140,141,142,143,144,145,146,147,148,149,150,151,152],"graph","bigquery","bigquery graph","for","sql","edge","graph query","hop","node","queries","language","query","connectivity","gql","semantic","multi","connection","path",{"skillNo":154,"name":155,"nameZh":6,"description":156,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":157,"categories":158,"keywords":160,"publishedAt":50},"01M698ZEVMRDDFX2MH3GHQGSNW","bigquery-ai-ml","Leverages BigQuery's built-in machine learning and GenAI capabilities for advanced data analytics. Use when you need to write SQL queries that perform time-series forecasting, predict values, detect outliers or anomalies, find key drivers, perform semantic search or vector search, classify text, calculate similarity, summarize content, translate language, evaluate models, filter by semantic conditions, measure the causal effect of an intervention, compute correlations between columns, detect change points or structural breaks, extract trend or seasonality components, or leverage generative AI capabilities in BigQuery. Do not use for general BigQuery dataset, table, or job management requests.","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-python\u002Fblob\u002Fmain\u002Fsrc\u002Fgoogle\u002Fadk\u002Fintegrations\u002Fbigquery\u002Fskills\u002Fbigquery-ai-ml\u002FSKILL.md",[159],{"categoryNo":132,"categoryName":133,"taxonomyType":26,"taxonomyTypeDesc":27},[161,136,162,163,164,33,165,166,167,168,169,170,171,172,173,9,174,175,29,176,177,178,179],"ai ml","ml","bigquery ai ml","vector","generative","you","advanced","dataset","leverage","structural","time","effect","search","summarize","genai","generative ai","translate","components","capabilities",{"skillNo":181,"name":182,"nameZh":6,"description":183,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":184,"categories":185,"keywords":191,"publishedAt":50},"01M698ZCN6SZ9SJ8E9970M47FQ","code-review-skill","Reviews code with feedback tailored to the developer's profile in session state.","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-python\u002Fblob\u002Fmain\u002Fcontributing\u002Fsamples\u002Fenvironment_and_skills\u002Fskills_inject_state\u002Fskills\u002Fcode-review-skill\u002FSKILL.md",[186,189,190],{"categoryNo":187,"categoryName":188,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000007","代码审查",{"categoryNo":129,"categoryName":130,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},[192,38,193,47,194,195,196,197,198,199,200,201,202,203],"review skill","code review skill","code review","session","state","developer","feedback","profile","with","session state","reviews","true",{"skillNo":205,"name":206,"nameZh":6,"description":207,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":208,"categories":209,"keywords":211,"publishedAt":50},"01M698ZAMH02NSGXMR533ETWYW","weather-skill","A skill that provides weather information based on reference data.","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-python\u002Fblob\u002Fmain\u002Fcontributing\u002Fsamples\u002Fenvironment_and_skills\u002Fskills_agent\u002Fskills\u002Fweather-skill\u002FSKILL.md",[210],{"categoryNo":129,"categoryName":130,"taxonomyType":21,"taxonomyTypeDesc":22},[212,213,214,215,216,217,218,219],"weather skill","weather","data","reference","speed","get","wind","information",{"skillNo":221,"name":206,"nameZh":6,"description":222,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":223,"categories":224,"keywords":226,"publishedAt":50},"01M698Z8QFDZ713E03589BHEG5","A skill that provides weather information based on reference data and scripts.","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-python\u002Fblob\u002Fmain\u002Fcontributing\u002Fsamples\u002Fenvironment_and_skills\u002Fskills\u002Fskills\u002Fweather-skill\u002FSKILL.md",[225],{"categoryNo":129,"categoryName":130,"taxonomyType":21,"taxonomyTypeDesc":22},[213,212,219,218,227,217,216,215,214],"scripts",{"skillNo":229,"name":206,"nameZh":6,"description":207,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":230,"categories":231,"keywords":233,"publishedAt":50},"01M698Z6P1NZFW6A6V342AWZPR","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fadk-python\u002Fblob\u002Fmain\u002Fcontributing\u002Fsamples\u002Fenvironment_and_skills\u002Flocal_environment_skill\u002Fskills\u002Fweather-skill\u002FSKILL.md",[232],{"categoryNo":129,"categoryName":130,"taxonomyType":21,"taxonomyTypeDesc":22},[212,213,215,219,214]]