[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M69982C3ADD3MMGJRXY6M9KW":3,"skill-same:01M69982C3ADD3MMGJRXY6M9KW":110},{"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":36,"linkOnly":37,"markdownContent":38,"markdownBody":39,"frontMatter":40,"refName":41,"commitSha":42,"skillDirectory":43,"forksCount":44,"repositoryHtmlUrl":45,"repositoryHomepageUrl":6,"ownerHtmlUrl":46,"ownerBlogUrl":47,"ownerDescription":48,"updatedAt":49,"install":50,"resources":63},"01M69982C3ADD3MMGJRXY6M9KW","pinpoint webui contributor",null,"Provides instructions and coding guidelines on how to contribute to the Pinpoint Web UI Angular project in the \u002Fpinpoint\u002Fwebui directory. Any code change in this directory should adhere to this skill.","google\u002Fskia-buildbot","google","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F1342004?v=4","01M698VYEFDM0VJBZDYYJ2T83S","Google","01M6997W20FZ8HQ6H0M4X29GBK",178,"BSD-3-Clause","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fskia-buildbot\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fpinpoint-webui-guidelines\u002FSKILL.md",[],[5,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35],"contributor","webui","change","guidelines","code","ui","angular","how","contribute","coding","instructions","coding guidelines","web","project","how to","web ui","directory","2026-11-10 10:12:30",false,"---\nname: pinpoint webui contributor\ndescription: >-\n  Provides instructions and coding guidelines on how to contribute to the Pinpoint Web UI Angular\n  project in the \u002Fpinpoint\u002Fwebui directory. Any code change in this directory should adhere to this skill.\n---\n\n# Skia Buildbot Pinpoint Web UI Contributor Guidelines\n\nUse this skill when making changes under `buildbot\u002Fpinpoint\u002Fwebui`.\n\n## Guidelines\n\n1. **Separate Component Templates**: Always place component HTML templates in a standalone `.html` file. Do not inline HTML strings within the component's TypeScript (`.ts`) file using the `template` property.\n2. **Separate Stylesheets**: If a component requires custom styling, always create a dedicated `.css` (or `.scss`) file. Never inline style declarations inside the component's TypeScript file using the `styles` property.\n3. **Minimize Inline Styles**: Avoid using the inline HTML `style` attribute for complex styling. Simple, single-purpose styling adjustments that are unique to the element (e.g., adding a `margin-top` to a spacer or divider) are acceptable inline. However, if an element requires multiple style declarations or reusable rules, define them as a class in the component's stylesheet instead.\n4. **Utilize Angular Material Theming**: Leverage the official Angular Material system, color palettes, utility variables (`var(--mat-...)`), and standard paddings\u002Fdensities. Avoid introducing custom hardcoded colors or bespoke layout metrics. This ensures seamless light and dark mode support.\n5. **Prefer Standard Angular Material Components**: Before building any custom UI element, check if a suitable component exists in the Angular Material library (e.g., `mat-table`, `mat-select`, `mat-dialog`). Reusing standard elements provides built-in accessibility (a11y) and keyboard navigation.\n6. **Adhere to the Single Responsibility Principle**: Design each component to serve a single, clear purpose. If a component handles too many unrelated UI elements, complex operations, or distinct workflows, split it into smaller, specialized sub-components.\n7. **Extract Complex Business Logic to Services**: Keep Angular components lean by delegating complex business logic, state management, and API data-fetching operations to dedicated Angular services. Components should primarily focus on managing the view presentation and user interactions.\n8. **Promote Reusable Components**: Move common, highly reusable UI elements, pipes, and directives into shared or common directories. This prevents code duplication and enables seamless sharing across different feature components.\n9. **Prefer Enums Over String Literals**: Avoid hardcoding raw string literals for states, types, categories, or configuration values throughout the codebase. Define and use strongly-typed TypeScript `enum`s or union types to improve readability, auto-completion, and refactoring safety.\n","# Skia Buildbot Pinpoint Web UI Contributor Guidelines\n\nUse this skill when making changes under `buildbot\u002Fpinpoint\u002Fwebui`.\n\n## Guidelines\n\n1. **Separate Component Templates**: Always place component HTML templates in a standalone `.html` file. Do not inline HTML strings within the component's TypeScript (`.ts`) file using the `template` property.\n2. **Separate Stylesheets**: If a component requires custom styling, always create a dedicated `.css` (or `.scss`) file. Never inline style declarations inside the component's TypeScript file using the `styles` property.\n3. **Minimize Inline Styles**: Avoid using the inline HTML `style` attribute for complex styling. Simple, single-purpose styling adjustments that are unique to the element (e.g., adding a `margin-top` to a spacer or divider) are acceptable inline. However, if an element requires multiple style declarations or reusable rules, define them as a class in the component's stylesheet instead.\n4. **Utilize Angular Material Theming**: Leverage the official Angular Material system, color palettes, utility variables (`var(--mat-...)`), and standard paddings\u002Fdensities. Avoid introducing custom hardcoded colors or bespoke layout metrics. This ensures seamless light and dark mode support.\n5. **Prefer Standard Angular Material Components**: Before building any custom UI element, check if a suitable component exists in the Angular Material library (e.g., `mat-table`, `mat-select`, `mat-dialog`). Reusing standard elements provides built-in accessibility (a11y) and keyboard navigation.\n6. **Adhere to the Single Responsibility Principle**: Design each component to serve a single, clear purpose. If a component handles too many unrelated UI elements, complex operations, or distinct workflows, split it into smaller, specialized sub-components.\n7. **Extract Complex Business Logic to Services**: Keep Angular components lean by delegating complex business logic, state management, and API data-fetching operations to dedicated Angular services. Components should primarily focus on managing the view presentation and user interactions.\n8. **Promote Reusable Components**: Move common, highly reusable UI elements, pipes, and directives into shared or common directories. This prevents code duplication and enables seamless sharing across different feature components.\n9. **Prefer Enums Over String Literals**: Avoid hardcoding raw string literals for states, types, categories, or configuration values throughout the codebase. Define and use strongly-typed TypeScript `enum`s or union types to improve readability, auto-completion, and refactoring safety.\n",{"name":5,"description":7},"main","c4e352b8d0b662d88bc8f566e0f5891aaa4b9b0c",".agents\u002Fskills\u002Fpinpoint-webui-guidelines",90,"https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fskia-buildbot","https:\u002F\u002Fgithub.com\u002Fgoogle","https:\u002F\u002Fopensource.google\u002F","Google ❤️ Open Source","2026-11-14 05:44:48",{"source":8,"skillName":5,"commands":51,"prompt":61,"zipAvailable":62},[52,55,58],{"tool":53,"command":54},"npx","npx skills add google\u002Fskia-buildbot --skill \"pinpoint webui contributor\"",{"tool":56,"command":57},"bunx","bunx skills add google\u002Fskia-buildbot --skill \"pinpoint webui contributor\"",{"tool":59,"command":60},"pnpm","pnpm dlx skills add google\u002Fskia-buildbot --skill \"pinpoint webui contributor\"","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fskia-buildbot\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fpinpoint-webui-guidelines\u002FSKILL.md",true,[64,70,74,78,82,86,90,94,98,102,106],{"path":65,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":68,"sourceHtmlUrl":69},"references\u002Fbackend-api-design.md","REFERENCE","参考文档",10647,"https:\u002F\u002Fgithub.com\u002Ffel-tte\u002Frobot-forex\u002Fblob\u002Fmain\u002Fclaude-super-kit\u002F.claude\u002Fskills\u002Fbackend-development\u002Freferences\u002Fbackend-api-design.md",{"path":71,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":72,"sourceHtmlUrl":73},"references\u002Fbackend-architecture.md",12503,"https:\u002F\u002Fgithub.com\u002Ffel-tte\u002Frobot-forex\u002Fblob\u002Fmain\u002Fclaude-super-kit\u002F.claude\u002Fskills\u002Fbackend-development\u002Freferences\u002Fbackend-architecture.md",{"path":75,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":76,"sourceHtmlUrl":77},"references\u002Fbackend-authentication.md",9381,"https:\u002F\u002Fgithub.com\u002Ffel-tte\u002Frobot-forex\u002Fblob\u002Fmain\u002Fclaude-super-kit\u002F.claude\u002Fskills\u002Fbackend-development\u002Freferences\u002Fbackend-authentication.md",{"path":79,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":80,"sourceHtmlUrl":81},"references\u002Fbackend-code-quality.md",13128,"https:\u002F\u002Fgithub.com\u002Ffel-tte\u002Frobot-forex\u002Fblob\u002Fmain\u002Fclaude-super-kit\u002F.claude\u002Fskills\u002Fbackend-development\u002Freferences\u002Fbackend-code-quality.md",{"path":83,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":84,"sourceHtmlUrl":85},"references\u002Fbackend-debugging.md",18911,"https:\u002F\u002Fgithub.com\u002Ffel-tte\u002Frobot-forex\u002Fblob\u002Fmain\u002Fclaude-super-kit\u002F.claude\u002Fskills\u002Fbackend-development\u002Freferences\u002Fbackend-debugging.md",{"path":87,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":88,"sourceHtmlUrl":89},"references\u002Fbackend-devops.md",10719,"https:\u002F\u002Fgithub.com\u002Ffel-tte\u002Frobot-forex\u002Fblob\u002Fmain\u002Fclaude-super-kit\u002F.claude\u002Fskills\u002Fbackend-development\u002Freferences\u002Fbackend-devops.md",{"path":91,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":92,"sourceHtmlUrl":93},"references\u002Fbackend-mindset.md",11255,"https:\u002F\u002Fgithub.com\u002Ffel-tte\u002Frobot-forex\u002Fblob\u002Fmain\u002Fclaude-super-kit\u002F.claude\u002Fskills\u002Fbackend-development\u002Freferences\u002Fbackend-mindset.md",{"path":95,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":96,"sourceHtmlUrl":97},"references\u002Fbackend-performance.md",9625,"https:\u002F\u002Fgithub.com\u002Ffel-tte\u002Frobot-forex\u002Fblob\u002Fmain\u002Fclaude-super-kit\u002F.claude\u002Fskills\u002Fbackend-development\u002Freferences\u002Fbackend-performance.md",{"path":99,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":100,"sourceHtmlUrl":101},"references\u002Fbackend-security.md",8092,"https:\u002F\u002Fgithub.com\u002Ffel-tte\u002Frobot-forex\u002Fblob\u002Fmain\u002Fclaude-super-kit\u002F.claude\u002Fskills\u002Fbackend-development\u002Freferences\u002Fbackend-security.md",{"path":103,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":104,"sourceHtmlUrl":105},"references\u002Fbackend-technologies.md",7660,"https:\u002F\u002Fgithub.com\u002Ffel-tte\u002Frobot-forex\u002Fblob\u002Fmain\u002Fclaude-super-kit\u002F.claude\u002Fskills\u002Fbackend-development\u002Freferences\u002Fbackend-technologies.md",{"path":107,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":108,"sourceHtmlUrl":109},"references\u002Fbackend-testing.md",10667,"https:\u002F\u002Fgithub.com\u002Ffel-tte\u002Frobot-forex\u002Fblob\u002Fmain\u002Fclaude-super-kit\u002F.claude\u002Fskills\u002Fbackend-development\u002Freferences\u002Fbackend-testing.md",[111,116],{"skillNo":112,"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":113,"categories":114,"keywords":115,"publishedAt":36},"01M69981399XWVRKCBQ8K90JN4","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fskia-buildbot\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fpinpoint-webui-contributor\u002FSKILL.md",[],[19,5,20,34,33,32,30,29,28,27,26,25,31,24,23,22,21,35],{"skillNo":117,"name":118,"nameZh":6,"description":119,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":120,"categories":121,"keywords":122,"publishedAt":36},"01M6997ZJ2YD8M037NSB47X2D7","perf spanner migrations","Instructions for performing database schema migrations, modifying tables, and regenerating Spanner schema files in the Performance Dashboard (perf).","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fskia-buildbot\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fperf-spanner-migrations\u002FSKILL.md",[],[123,124,118,125,126,127,128,129,130,131,29,132,133,134],"migrations","perf","performance","performing","for","tables","database schema","files","schema","database","performance dashboard","dashboard"]