[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M698X799Z5SA3PAAJ02KZ1DR":3,"skill-same:01M698X799Z5SA3PAAJ02KZ1DR":59},{"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":30,"linkOnly":31,"markdownContent":32,"markdownBody":33,"frontMatter":34,"refName":35,"commitSha":36,"skillDirectory":37,"forksCount":38,"repositoryHtmlUrl":39,"repositoryHomepageUrl":40,"ownerHtmlUrl":41,"ownerBlogUrl":42,"ownerDescription":43,"updatedAt":44,"install":45,"resources":58},"01M698X799Z5SA3PAAJ02KZ1DR","cpp-header-inclusion",null,"Enforce the strict topological header inclusion layering and reordering rules in Filament. Use this skill when adding or modifying `#include` directives in C++ source or header files.","google\u002Ffilament","google","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F1342004?v=4","01M698VYEFDM0VJBZDYYJ2T83S","Google","01M698W8SGYAMBEGYBK16J57R1",20742,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Ffilament\u002Fblob\u002Fmain\u002Fskills\u002Fcpp_header_inclusion\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29],"cpp header inclusion","cpp","inclusion","Rules","use","files","enforce","c++","source","directives","when","2026-11-10 10:12:30",false,"---\nname: cpp-header-inclusion\ndescription: >\n  Enforce the strict topological header inclusion layering and reordering rules in Filament.\n  Use this skill when adding or modifying `#include` directives in C++ source or header files.\n---\n\n# Dynamic C++ Header Inclusion & Reordering\n\nFilament enforces a strict, acyclic include layering hierarchy to optimize compile times, prevent header pollution, and identify missing dependencies.\n\n## 1. Logical Layer Hierarchy\n\nIncludes must be grouped and separated by **exactly one blank line** in the following order (top to bottom):\n\n1.  **Layer 0 (Corresponding Header):** `#include \"details\u002FFoo.h\"` (isolated at the very top).\n2.  **Layer 0.5 (Windows Cleanup):** `#include \u003Cutils\u002Funwindows.h>` (always second, only if needed).\n3.  **Layer 1 (Private\u002FLocal Headers):** `#include \"PrivateStuff.h\"` (using double quotes `\" \"` strictly for private local headers located under the local target's `src\u002F` folder).\n4.  **Layer 2 (Internal Proprietary Libraries):** Public and private includes for other internal libraries (e.g. `\u003Cfilaflat\u002F...>`, `\u003Cbackend\u002F...>`, `\u003Cutils\u002F...>`, `\u003Cmath\u002F...>`). All proprietary library includes **must** use `\u003C >` syntax (including `private\u002F` sub-folders). The layering priority order of these libraries is dynamically computed based on `CMakeLists.txt` target linkages.\n5.  **Layer 3 (Third-Party Libraries):** `\u003Ctsl\u002F...>`, `\u003Cabsl\u002F...>`, `\u003Cjni.h>`.\n6.  **Layer 4 (C++ Standard Library):** `\u003Calgorithm>`, `\u003Cvector>`, `\u003Ccstddef>` (including standard `\u003Cc...>` wrappers).\n7.  **Layer 5 (POSIX System Headers):** `\u003Cunistd.h>`, `\u003Csys\u002Fstat.h>` (C system headers below C++ std, but above C std).\n8.  **Layer 6 (C Standard Library):** Legacy C system headers ending in `.h` (e.g., `\u003Cstdint.h>`, `\u003Cstddef.h>`).\n\n---\n\n## 2. Sorting & Spacing Rules for Private Includes (Layer 1)\n\n*   **Flat-First:** Flat\u002Ftop-level includes (without a subdirectory prefix, e.g., `\"Allocators.h\"`) are sorted **above** nested subdirectory includes (e.g., `\"components\u002FFoo.h\"`).\n*   **Visual Grouping:** Private includes must be grouped by their first subdirectory path prefix, separated by **exactly one blank line**.\n\n---\n\n## 3. Running the Automated Include Formatter\n\nAI agents **must never manually sort includes** or guess target dependencies. Always run the repository's dynamic topological include formatter after modifying C++ files:\n\n```bash\n.\u002Ftools\u002Freorganize-headers\u002Frun.py \u003Cfile_or_directory>\n```\n\n*Note: The tool dynamically parses `CMakeLists.txt` files to topologically sort proprietary libraries and includes preprocessor safety checks to avoid breaking platform-conditional include guards.*\n","# Dynamic C++ Header Inclusion & Reordering\n\nFilament enforces a strict, acyclic include layering hierarchy to optimize compile times, prevent header pollution, and identify missing dependencies.\n\n## 1. Logical Layer Hierarchy\n\nIncludes must be grouped and separated by **exactly one blank line** in the following order (top to bottom):\n\n1.  **Layer 0 (Corresponding Header):** `#include \"details\u002FFoo.h\"` (isolated at the very top).\n2.  **Layer 0.5 (Windows Cleanup):** `#include \u003Cutils\u002Funwindows.h>` (always second, only if needed).\n3.  **Layer 1 (Private\u002FLocal Headers):** `#include \"PrivateStuff.h\"` (using double quotes `\" \"` strictly for private local headers located under the local target's `src\u002F` folder).\n4.  **Layer 2 (Internal Proprietary Libraries):** Public and private includes for other internal libraries (e.g. `\u003Cfilaflat\u002F...>`, `\u003Cbackend\u002F...>`, `\u003Cutils\u002F...>`, `\u003Cmath\u002F...>`). All proprietary library includes **must** use `\u003C >` syntax (including `private\u002F` sub-folders). The layering priority order of these libraries is dynamically computed based on `CMakeLists.txt` target linkages.\n5.  **Layer 3 (Third-Party Libraries):** `\u003Ctsl\u002F...>`, `\u003Cabsl\u002F...>`, `\u003Cjni.h>`.\n6.  **Layer 4 (C++ Standard Library):** `\u003Calgorithm>`, `\u003Cvector>`, `\u003Ccstddef>` (including standard `\u003Cc...>` wrappers).\n7.  **Layer 5 (POSIX System Headers):** `\u003Cunistd.h>`, `\u003Csys\u002Fstat.h>` (C system headers below C++ std, but above C std).\n8.  **Layer 6 (C Standard Library):** Legacy C system headers ending in `.h` (e.g., `\u003Cstdint.h>`, `\u003Cstddef.h>`).\n\n---\n\n## 2. Sorting & Spacing Rules for Private Includes (Layer 1)\n\n*   **Flat-First:** Flat\u002Ftop-level includes (without a subdirectory prefix, e.g., `\"Allocators.h\"`) are sorted **above** nested subdirectory includes (e.g., `\"components\u002FFoo.h\"`).\n*   **Visual Grouping:** Private includes must be grouped by their first subdirectory path prefix, separated by **exactly one blank line**.\n\n---\n\n## 3. Running the Automated Include Formatter\n\nAI agents **must never manually sort includes** or guess target dependencies. Always run the repository's dynamic topological include formatter after modifying C++ files:\n\n```bash\n.\u002Ftools\u002Freorganize-headers\u002Frun.py \u003Cfile_or_directory>\n```\n\n*Note: The tool dynamically parses `CMakeLists.txt` files to topologically sort proprietary libraries and includes preprocessor safety checks to avoid breaking platform-conditional include guards.*\n",{"name":5,"description":7},"main","fd9ec7ff9510df148011c5326bcb50d4bfb811ca","skills\u002Fcpp_header_inclusion",2305,"https:\u002F\u002Fgithub.com\u002Fgoogle\u002Ffilament","https:\u002F\u002Fgoogle.github.io\u002Ffilament\u002F","https:\u002F\u002Fgithub.com\u002Fgoogle","https:\u002F\u002Fopensource.google\u002F","Google ❤️ Open Source","2026-11-13 03:03:27",{"source":8,"skillName":5,"commands":46,"prompt":56,"zipAvailable":57},[47,50,53],{"tool":48,"command":49},"npx","npx skills add google\u002Ffilament --skill cpp-header-inclusion",{"tool":51,"command":52},"bunx","bunx skills add google\u002Ffilament --skill cpp-header-inclusion",{"tool":54,"command":55},"pnpm","pnpm dlx skills add google\u002Ffilament --skill cpp-header-inclusion","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fgoogle\u002Ffilament\u002Fblob\u002Fmain\u002Fskills\u002Fcpp_header_inclusion\u002FSKILL.md",true,[],[60,79,94,110,129,142],{"skillNo":61,"name":62,"nameZh":6,"description":63,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":64,"categories":65,"keywords":66,"publishedAt":30},"01M698XTTZP1MWPYW9EVV7DF2Q","filament-math","Enforce correct mathematical primitives and naming conventions in Filament code. Use this skill when performing coordinate transformations, vector math, or projection setups.","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Ffilament\u002Fblob\u002Fmain\u002Ftools\u002Fai\u002Fagents\u002Fskills\u002Ffilament_math\u002FSKILL.md",[],[67,68,29,69,70,71,72,23,73,25,74,75,76,77,78],"filament math","math","code","vector","correct","primitives","coordinate","conventions","Mathematical","naming","naming conventions","performing",{"skillNo":80,"name":81,"nameZh":6,"description":82,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":83,"categories":84,"keywords":85,"publishedAt":30},"01M698XRXR5Q463GQ03RDBD9FR","filament-lifetime","Enforce correct Filament object creation and destruction lifecycles. Use this skill when initializing rendering pipelines or allocating\u002Fdeallocating GPU buffers and entities.","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Ffilament\u002Fblob\u002Fmain\u002Ftools\u002Fai\u002Fagents\u002Fskills\u002Ffilament_lifetime\u002FSKILL.md",[],[86,23,87,88,25,89,71,90,91,92,29,93],"filament lifetime","rendering","creation","pipelines","gpu","destruction","object","entities",{"skillNo":95,"name":96,"nameZh":6,"description":97,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":98,"categories":99,"keywords":100,"publishedAt":30},"01M698XQ0E9RE6RDFYKS2PF1S1","cherry-pick","Cherry-pick a commit onto another branch and open the PR. Use when the user asks to cherry-pick or backport a commit or PR to a release branch.","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Ffilament\u002Fblob\u002Fmain\u002Fthird_party\u002Fdawn\u002Fthird_party\u002Fdirectx-shader-compiler\u002Fsrc\u002F.github\u002Fskills\u002Fcherry-pick\u002FSKILL.md",[],[101,102,103,104,29,105,23,106,107,108,109],"pick","cherry pick","branch","open","user","backport","commit","pr","release",{"skillNo":111,"name":112,"nameZh":6,"description":113,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":114,"categories":115,"keywords":116,"publishedAt":30},"01M698XN2P44Y956SJRD7CPB22","verification-protocols","Standard verification pipeline to execute after modifying C++ source or header files. Use this skill to format includes, build the engine, and run core tests.","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Ffilament\u002Fblob\u002Fmain\u002Fskills\u002Fverification_protocols\u002FSKILL.md",[],[117,118,119,120,121,122,123,124,125,23,24,126,26,127,27,128],"protocols","verification","verification protocols","core","run","pipeline","format","engine","execute","build","tests","standard",{"skillNo":130,"name":131,"nameZh":6,"description":132,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":133,"categories":134,"keywords":135,"publishedAt":30},"01M698XK6J428QZM1WGVWW50JE","preprocessor-guard-hygiene","Enforce preprocessor guard rules and macro-dependent inclusion hygiene in C++. Use this skill when modifying conditional imports or preprocessor directives.","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Ffilament\u002Fblob\u002Fmain\u002Fskills\u002Fpreprocessor_guard_hygiene\u002FSKILL.md",[],[136,137,138,22,29,28,139,140,21,26,25,23,141],"hygiene","guard","preprocessor guard hygiene","conditional","imports","macro",{"skillNo":143,"name":144,"nameZh":6,"description":145,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":146,"categories":147,"keywords":148,"publishedAt":30},"01M698XHA1J01F915DKYHXZ18C","header-self-containment","Enforce strict header self-containment so that every header file compiles independently. Use this skill when creating or modifying C++ header files.","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Ffilament\u002Fblob\u002Fmain\u002Fskills\u002Fheader_self_containment\u002FSKILL.md",[],[149,150,151,29,26,25,24,23,152],"header self containment","containment","self","file"]