skills/angular-awesome/SKILL.md
Use Angular Awesome wrapper directives for Web Awesome web components in Angular 20+ projects. Trigger when tasks mention wa-* components (wa-button, wa-input, wa-dialog, wa-toast, wa-select, wa-checkbox, etc.), Angular Awesome directives, Web Awesome Angular integration, component variants/appearance/size tokens, slot projection, form control binding, or angular-awesome imports. Covers component usage, layout utilities, services (toast), theming, and accessibility.
npx skillsauth add gedmarc/angular-awesome angular-awesomeInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Angular 20+ standalone directives wrapping Web Awesome 3.7.x web components. Every <wa-*> tag has a corresponding Wa*Directive or Wa*Component that binds attributes as @Input() properties, emits custom events as @Output(), and exposes nativeElement for direct access.
import { WaButtonDirective } from 'angular-awesome';
@Component({
standalone: true,
imports: [WaButtonDirective],
template: `<wa-button variant="brand" (wa-click)="save()">Save</wa-button>`
})
export class MyComponent { save() {} }
selector: 'wa-<name>', standalone, no template (directive on the native element).@Input() for every attribute — typed union with | string for template compatibility.@Output() for custom events — both camelCase (waClick) and hyphenated (wa-click) aliases.inject(ElementRef) + inject(Renderer2) for attribute application in ngOnInit/ngOnChanges.nativeElement getter for direct DOM access.src/types/tokens.ts)type VariantToken = 'brand' | 'neutral' | 'success' | 'warning' | 'danger' | 'inherit';
type SizeToken = 'xs' | 's' | 'm' | 'l' | 'xl' | 'small' | 'medium' | 'large' | 'inherit';
type Appearance = 'accent' | 'filled' | 'outlined' | 'plain' | 'filled-outlined';
Use normalizeAppearance() to convert legacy space-delimited values.
Angular content projection maps directly to web component slots:
<wa-card>
<span slot="header">Title</span>
Default slot content here
<span slot="footer">Footer</span>
</wa-card>
Bind with Angular syntax; never use string "true":
<wa-button [disabled]="isDisabled" [loading]="isLoading">Go</wa-button>
wa-input, wa-select, wa-checkbox, wa-switch, wa-slider, wa-textarea, wa-combobox, wa-color-picker, wa-number-input, wa-radio, wa-date-input, wa-date-picker, wa-known-date, wa-time-input support [(ngModel)] and reactive forms.
Listen to web component custom events via (wa-*) outputs:
<wa-input (wa-input)="onInput($event)" (wa-change)="onChange($event)"></wa-input>
import { WaToastService, provideWaToasts } from 'angular-awesome';
// In providers: ...provideWaToasts({ placement: 'top-end', max: 5 })
// In component: this.toasts.success('Saved!');
Container: <wa-toast-container placement="top-end"></wa-toast-container> — once in app root.
wa-layout-gap, wa-layout-align, wa-layout-cluster, wa-layout-stack, wa-layout-grid, wa-layout-flank, wa-layout-frame, wa-layout-split — structural layout directives.
src/directives/<name>/
├── <name>.directive.ts # Angular directive
├── <name>.directive.spec.ts # Unit tests
├── <name>.rules.md # Usage rules & API reference
└── <name>.example.md # Code examples for docs
Exports go in src/public-api.ts. Docs auto-generate from rules + example markdown via node docs/generate-docs.js.
references/component-catalog.mdreferences/directive-patterns.mdreferences/testing-conventions.mddevelopment
Theme and style Angular Awesome components using Web Awesome design tokens, CSS custom properties, CSS parts, variant/appearance/size tokens, and layout utilities. Use when customizing component appearance, applying brand colors, overriding default styles, using CSS shadow parts, or configuring layout directives (cluster, stack, grid, gap, align, flank, frame, split).
development
Write and maintain tests for Angular Awesome wrapper directives, components, and services. Use when creating spec files for wa-* components, testing form control integration, testing event emission, testing toast/service behavior, running headless or BrowserStack tests, or debugging test failures in Angular Awesome.
development
Create a new Angular Awesome wrapper directive or component for a Web Awesome web component. Use when adding a new wa-* component wrapper, scaffolding a directive with its spec/rules/example files, wiring it into public-api.ts, updating the changelog, and regenerating docs. Covers the full end-to-end flow from llms.txt API extraction through to build verification.
development
Migrate Angular Awesome component wrappers when the upstream Web Awesome API changes. Use when replacing custom implementations with official web components, updating property names or types, removing deprecated fields, aligning placement/position values, updating tests for new APIs, and updating docs/changelog for breaking changes.