К основному содержанию
скилл CX Codex

angular-architecture — скилл для Claude Code: структура

Скилл задаёт правила, куда класть компоненты Angular, как называть файлы и что менять в официальном стайлгайде.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add Gentleman-Programming/Gentleman-Skills --skill angular-architecture -a claude-code
npx skills add Gentleman-Programming/Gentleman-Skills --skill architecture -a claude-code
Открыть на GitHub

Что делает angular-architecture

Скилл описывает Scope Rule: место компонента зависит от того, кто его использует. Если компонент нужен одной фиче — он живёт в features/[feature]/components/. Если его тянут две фичи и больше — переезжает в features/shared/components/. Внутри фичи рядом лежат services/ и models/, а core/ держит синглтоны уровня приложения: сервисы, интерцепторы, гарды.

Отдельный пункт — имена файлов. Суффиксы .component, .service, .model скилл запрещает: папка уже говорит, что это. То есть user-profile.ts вместо user-profile.component.ts. Из официального стайлгайда берётся inject() вместо инъекции через конструктор, привязки class и style вместо ngClass/ngStyle, protected для членов, нужных только шаблону, readonly для inputs, outputs и queries.

Скилл расходится с официальными доками Angular именно в именовании файлов, и это стоит проговорить с командой до установки, иначе ревью превратится в спор. Внутри есть готовые команды ng для генерации компонента, сервиса и гарда сразу в нужную папку.

Какие задачи решает

  • решить, в какую папку положить новый компонент
  • разложить фичи, shared и core по одному шаблону
  • убрать суффиксы .component и .service из имён файлов
  • перевести компоненты на inject() и сигналы
  • сгенерировать компонент или гард сразу в нужной директории

Примеры запросов агенту

  • Помоги разложить компоненты корзины и чекаута по структуре проекта
  • Куда положить button.ts, если его используют корзина и чекаут?
  • Сгенерируй сервис для фичи products по правилам скилла

Как установить angular-architecture

1Через Skills CLI (Vercel)

npx skills add Gentleman-Programming/Gentleman-Skills --skill angular-architecture -a claude-code
npx skills add Gentleman-Programming/Gentleman-Skills --skill architecture -a claude-code

2Вручную: положить файлы

~/.claude/skills/architecture/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/architecture/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о angular-architecture

Как установить angular-architecture в Claude?

Выполните npx skills add Gentleman-Programming/Gentleman-Skills --skill angular-architecture -a claude-code. Файл скилла окажется в ~/.claude/skills/architecture/SKILL.md.

Что делает angular-architecture?

Задаёт структуру Angular-проекта: Scope Rule для размещения компонентов, раскладку features/shared/core, правила именования файлов и набор соглашений из официального стайлгайда.

Чем этот скилл отличается от официального стайлгайда Angular?

Он следует официальным правилам, но переопределяет именование файлов: суффиксы .component, .service и .model не используются, потому что контекст задаёт папка.

Исходный текст

SKILL.md · MIT
---
name: angular-architecture
description: >
  Angular architecture: Scope Rule, project structure, file naming, style guide.
  Trigger: When structuring Angular projects or deciding where to place components.
metadata:
  author: gentleman-programming
  version: "1.0"
---

## The Scope Rule (REQUIRED)

**"Scope determines structure"** - Where a component lives depends on its usage.

| Usage | Placement |
|-------|-----------|
| Used by 1 feature | `features/[feature]/components/` |
| Used by 2+ features | `features/shared/components/` |

### Example

```
features/
  shopping-cart/
    shopping-cart.ts          # Main component = feature name
    components/
      cart-item.ts            # Used ONLY by shopping-cart
      cart-summary.ts         # Used ONLY by shopping-cart
  checkout/
    checkout.ts
    components/
      payment-form.ts         # Used ONLY by checkout
  shared/
    components/
      button.ts               # Used by shopping-cart AND checkout
      modal.ts                # Used by multiple features
```

---

## Project Structure

```
src/app/
  features/
    [feature-name]/
      [feature-name].ts       # Main component (same name as folder)
      components/             # Feature-specific components
      services/               # Feature-specific services
      models/                 # Feature-specific types
    shared/                   # ONLY for 2+ feature usage
      components/
      services/
      pipes/
  core/                       # App-wide singletons
    services/
    interceptors/
    guards/
  app.ts
  app.config.ts
  routes.ts
  main.ts
```

---

## File Naming (REQUIRED)

No `.component`, `.service`, `.model` suffixes. The folder tells you what it is.

```
✅ user-profile.ts
❌ user-profile.component.ts

✅ cart.ts
❌ cart.service.ts

✅ user.ts
❌ user.model.ts
```

---

## Style Guide

### What We Follow (from official docs)

- `inject()` over constructor injection
- `class` and `style` bindings over `ngClass`/`ngStyle`
- `protected` for template-only members
- `readonly` for inputs, outputs, queries
- Name handlers for action (`saveUser`) not event (`handleClick`)
- Keep lifecycle hooks simple - delegate to well-named methods
- One concept per file

```typescript
@Component({...})
export class UserProfileComponent {
  // 1. Injected dependencies
  private readonly userService = inject(UserService);
  
  // 2. Inputs/Outputs
  readonly userId = input.required<string>();
  readonly userSaved = output<User>();
  
  // 3. Internal state
  private readonly _loading = signal(false);
  readonly loading = this._loading.asReadonly();
  
  // 4. Computed
  protected readonly displayName = computed(() => ...);
  
  // 5. Methods
  save(): void { ... }
}
```

### What We Override

| Official Says | We Do | Why |
|---------------|-------|-----|
| `user-profile.component.ts` | `user-profile.ts` | Redundant - folder tells context |
| `user.service.ts` | `user.ts` | Same |

---

## Commands

```bash
# New project
ng new my-app --style=scss --ssr=false

# Component in feature
ng g c features/products/components/product-card --flat

# Service in feature  
ng g s features/products/services/product --flat

# Guard in core
ng g g core/guards/auth --functional
```

---

## Resources

- https://angular.dev/style-guide

© gentleman-programming · MIT · Gentleman-Programming/Gentleman-Skills

Похожие скиллы

Всё по теме «Фронтенд и UI» →
angular-new-app Angular Team @ Google Скилл для быстрого создания нового Angular-приложения с помощью Angular CLI. Проверяет окружение, генерирует проект с нужными флагами и направляет разработку по лучшим практикам Angular. CX Codex +1 19 200установок angular-migration Seth Hobson Помогает переносить приложения с AngularJS на Angular по частям или целиком. Пригодится для гибридных приложений, замены компонентов и обновления зависимостей. CX Codex 10 900установок angular-architect https://github.com/Jeffallan Скилл для Claude Code и других ИИ-редакторов: собирает компоненты Angular 17+ на standalone и сигналах, настраивает маршрутизацию, NgRx и RxJS. CX Codex +1 4 800установок angular-best-practices Boise-State-Development Держит агента в рамках Angular 21: сигналы, standalone-компоненты, реактивные формы. Пригодится, когда агент тянет в проект устаревший синтаксис. CX Codex +1 756установок angular-development Mindrally Задаёт агенту правила Angular, SASS и TypeScript: строгая типизация, standalone-компоненты, сигналы. Пригодится, когда в проекте уже есть Angular. CX Codex +1 705установок angular-component analogjs Скилл под Angular 20+ с сигнальными входами, OnPush и host bindings, помеченный как deprecated: гайд из него удалён, вместо него — официальные скиллы Angular. CX Codex +1 11 500установок

Из того же набора4

Спонсоры проекта

Компании, которые помогают держать аналитику открытой