angular-performance — скилл для Claude Code: ускоряет Angular
Скилл для Angular: подсказывает, как грузить картинки через NgOptimizedImage, откладывать тяжёлые компоненты через @defer и настроить SSR с гидратацией.
npx skills add Gentleman-Programming/Gentleman-Skills --skill angular-performance -a claude-code
npx skills add Gentleman-Programming/Gentleman-Skills --skill performance -a claude-codeЧто делает angular-performance
Скилл включается, когда вы просите агента заняться производительностью Angular-приложения, изображениями или ленивой загрузкой. Внутри — набор правил по четырём темам: оптимизация картинок, отложенная загрузка компонентов, ленивые маршруты и SSR с гидратацией.
По изображениям правило жёсткое: ngSrc вместо src, обязательные width и height либо режим fill, а LCP-картинке нужен атрибут priority. Для fill родитель должен иметь position: relative, fixed или absolute. У @defer расписаны триггеры: on viewport для контента ниже сгиба, on interaction, on idle, on timer(500ms) и when condition, плюс блоки @placeholder, @loading и @error.
Отдельно сказано не трогать reflows и repaints в ngOnInit и ngAfterViewInit — это частая причина тормозов, которую легко пропустить. Для тяжёлых вычислений скилл советует сначала оптимизировать сам алгоритм, а уже потом браться за pure pipes, мемоизацию или computed().
Какие задачи решает
- настроить загрузку изображений без сдвигов вёрстки
- отложить загрузку тяжёлого компонента до появления в зоне видимости
- разбить маршруты на ленивые чанки
- включить SSR с гидратацией для SEO-страниц
- убрать reflow из lifecycle-хуков
Примеры запросов агенту
- пройдись по компонентам и переведи все img на NgOptimizedImage
- добавь @defer для блока комментариев с триггером on viewport
- сделай маршрут админки ленивым через loadComponent
Как установить angular-performance
1Через Skills CLI (Vercel)
npx skills add Gentleman-Programming/Gentleman-Skills --skill angular-performance -a claude-codenpx skills add Gentleman-Programming/Gentleman-Skills --skill performance -a claude-code2Вручную: положить файлы
~/.claude/skills/performance/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/performance/
1Через Skills CLI (Vercel)
npx skills add Gentleman-Programming/Gentleman-Skills --skill performance -a codex2Вручную: положить файлы
.agents/skills/performance/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add Gentleman-Programming/Gentleman-Skills --skill performance -a cursor2Вручную: положить файлы
.cursor/skills/performance/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install Gentleman-Programming/Gentleman-Skills performance2Вручную: положить файлы
.github/skills/performance/SKILL.md1Через Skills CLI (Vercel)
npx skills add Gentleman-Programming/Gentleman-Skills --skill performance -a gemini-cli2Командой платформы
gemini skills install https://github.com/Gentleman-Programming/Gentleman-Skills --path curated/angular/performanceВручную: положить файлы
.devin/skills/performance/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add Gentleman-Programming/Gentleman-Skills --skill performance -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о angular-performance
Как установить angular-performance в Claude?
Выполните npx skills add Gentleman-Programming/Gentleman-Skills --skill angular-performance -a claude-code. Файл скилла окажется в ~/.claude/skills/performance/SKILL.md.
Что делает angular-performance?
Даёт агенту правила по производительности Angular: NgOptimizedImage, @defer, ленивые маршруты, SSR с гидратацией и работа с тяжёлыми вычислениями.
Когда скилл вообще срабатывает?
Триггер — задачи про производительность Angular-приложения, изображения или ленивую загрузку. На других темах он не подключается.
Исходный текст
SKILL.md · MIT
---
name: angular-performance
description: >
Angular performance: NgOptimizedImage, @defer, lazy loading, SSR.
Trigger: When optimizing Angular app performance, images, or lazy loading.
metadata:
author: gentleman-programming
version: "1.0"
---
## NgOptimizedImage (REQUIRED for images)
```typescript
import { NgOptimizedImage } from '@angular/common';
@Component({
imports: [NgOptimizedImage],
template: `
<!-- LCP image: add priority -->
<img ngSrc="hero.jpg" width="800" height="400" priority>
<!-- Regular: lazy loaded by default -->
<img ngSrc="thumb.jpg" width="200" height="200">
<!-- Fill mode (parent needs position: relative) -->
<img ngSrc="bg.jpg" fill>
<!-- With placeholder -->
<img ngSrc="photo.jpg" width="400" height="300" placeholder>
`
})
```
### Rules
- ALWAYS set `width` and `height` (or `fill`)
- Add `priority` to LCP (Largest Contentful Paint) image
- Use `ngSrc` not `src`
- Parent of `fill` image must have `position: relative/fixed/absolute`
---
## @defer - Lazy Components
```html
@defer (on viewport) {
<heavy-component />
} @placeholder {
<p>Placeholder shown immediately</p>
} @loading (minimum 200ms) {
<spinner />
} @error {
<p>Failed to load</p>
}
```
### Triggers
| Trigger | When to Use |
|---------|-------------|
| `on viewport` | Below the fold content |
| `on interaction` | Load on click/focus/hover |
| `on idle` | Load when browser is idle |
| `on timer(500ms)` | Load after delay |
| `when condition` | Load when expression is true |
```html
<!-- Multiple triggers -->
@defer (on viewport; on interaction) {
<comments />
}
<!-- Conditional -->
@defer (when showComments()) {
<comments />
}
```
---
## Lazy Routes
```typescript
// Single component
{
path: 'admin',
loadComponent: () => import('./features/admin/admin').then(c => c.AdminComponent)
}
// Feature with child routes
{
path: 'users',
loadChildren: () => import('./features/users/routes').then(m => m.USERS_ROUTES)
}
```
---
## SSR & Hydration
```typescript
bootstrapApplication(AppComponent, {
providers: [
provideClientHydration()
]
});
```
| Scenario | Use |
|----------|-----|
| SEO critical (blog, e-commerce) | SSR |
| Dashboard/Admin | CSR |
| Static marketing site | SSG/Prerender |
---
## Slow Computations
| Solution | When |
|----------|------|
| Optimize algorithm | First choice always |
| Pure pipes | Cache single result |
| Memoization | Cache multiple results |
| `computed()` | Derived signal state |
**NEVER** trigger reflows/repaints in lifecycle hooks (`ngOnInit`, `ngAfterViewInit`).
---
## Resources
- https://angular.dev/guide/image-optimization
- https://angular.dev/guide/defer
- https://angular.dev/best-practices/runtime-performance
- https://angular.dev/guide/ssr
© gentleman-programming · MIT · Gentleman-Programming/Gentleman-Skills