From architecture-angular
Gera todos os elementos da camada Shared de uma solução Angular: Dumb Components reutilizáveis, Pipes customizados, Directives de comportamento e integração com bibliotecas de UI (Angular Material, PrimeNG, Tailwind). Use sempre que o usuário mencionar "shared component", "componente compartilhado", "dumb component shared", "pipe Angular", "pipe customizado", "directive Angular", "directive de comportamento", "UI library Angular", "Angular Material", "PrimeNG", "Tailwind Angular", "criar pipe", "criar directive", "criar componente reutilizável", "camada shared", "shared module", "componente de apresentação", "componente sem lógica". Também dispara quando o usuário pedir para criar qualquer um destes itens: ButtonComponent, CardComponent, ModalComponent, TableComponent, BadgeComponent, AvatarComponent, SpinnerComponent, EmptyStateComponent, DatePipe, CurrencyPipe, TruncatePipe, ClickOutsideDirective, AutoFocusDirective, InfiniteScrollDirective, TooltipDirective. NÃO use para componentes com lógica de negócio ou acesso à Store (use angular-feature-layer) nem para serviços singleton (use angular-core-layer).
How this skill is triggered — by the user, by Claude, or both
Slash command
/architecture-angular:angular-shared-layerThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Skill para geração da **camada Shared** de uma solução Angular — componentes de apresentação, pipes e directives reutilizáveis em toda a aplicação, sem dependência de lógica de negócio ou Store.
Skill para geração da camada Shared de uma solução Angular — componentes de apresentação, pipes e directives reutilizáveis em toda a aplicação, sem dependência de lógica de negócio ou Store.
Tudo na camada Shared deve ser reutilizável, sem opinião de negócio e sem acesso à Store.
shared/
├── components/ → Dumb Components (apresentação pura, @Input/@Output)
│ ├── button/
│ ├── card/
│ ├── modal/
│ ├── table/
│ ├── badge/
│ ├── avatar/
│ ├── spinner/
│ └── empty-state/
├── pipes/ → Pipes de transformação de dados
│ ├── date-format.pipe.ts
│ ├── currency-br.pipe.ts
│ ├── truncate.pipe.ts
│ ├── cpf.pipe.ts
│ └── file-size.pipe.ts
├── directives/ → Directives de comportamento DOM
│ ├── click-outside.directive.ts
│ ├── auto-focus.directive.ts
│ ├── infinite-scroll.directive.ts
│ ├── tooltip.directive.ts
│ └── copy-to-clipboard.directive.ts
└── ui/ → Configuração e wrappers de UI Library
├── material.config.ts
├── primeng.config.ts
└── tailwind-tokens.ts
Identifique o item solicitado e leia o arquivo de referência correspondente:
| Item | Arquivo de referência | Quando usar |
|---|---|---|
| Dumb Components | references/shared-components.md | Componentes de apresentação reutilizáveis |
| Pipes | references/shared-pipes.md | Transformações de dados no template |
| Directives | references/shared-directives.md | Comportamentos DOM reutilizáveis |
| UI Library | references/shared-ui-library.md | Angular Material, PrimeNG, Tailwind |
Pergunte ao usuário:
TruncatePipe para truncar texto longo)Confirme que o item:
Leia o arquivo de referência correspondente e gere o código completo.
Entregue:
.ts com path correto (src/app/shared/...).html e .scss se for componentestandalone: trueChangeDetectionStrategy.OnPushinput() e output() do Angular 17+ (não @Input/@Output)app-button, app-card)pure: true (padrão) — evitar pipes impuroshostDirectives quando possível para composiçãoAntes de gerar, confirme que o item atende:
@Input — sem depender de contexto externoUserCard — isso é Feature; sim Card)Componente com OnPush não atualiza
@Input usam referências novas (imutabilidade)input.required() para garantir que o valor sempre chegamarkForCheck() se houver assinatura de Observable internoPipe não transforma corretamente
imports do componente standaloneLOCALE_ID no app.config.tsDirective não aplica estilo
host binding está corretoHostListener ou host: { '(event)': 'handler()' } para eventosnpx claudepluginhub brunocesharp/claude --plugin architecture-angularCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.