
Angular Developer
Ship enter/leave and transition animations in Angular apps without picking the wrong animation API for the project's version.
Overview
Angular Developer is an agent skill for the Build phase that guides version-correct Angular DOM animations using native CSS hooks or legacy @angular/animations.
Install
npx skills add https://github.com/affaan-m/everything-claude-code --skill angular-developerWhat is this skill?
- Reads package.json first to branch Angular v20.2+ vs legacy @angular/animations
- Documents native animate.enter and animate.leave with CSS class hooks
- Includes keyframe and transition patterns with starting-style notes for enter animations
- Covers leave-phase timing so DOM removal waits for animation completion
- Branches guidance at Angular v20.2+ for native animate.enter/animate.leave
Adoption & trust: 1.2k installs on skills.sh; 210k GitHub stars; 3/3 security scanners passed (skills.sh audits).
What problem does it solve?
You need smooth enter/leave UI motion but your Angular version determines a completely different—and easy to get wrong—animation API.
Who is it for?
Solo builders polishing conditional Angular UI with @if blocks who want CSS-first motion on modern Angular without researching breaking changes.
Skip if: Greenfield projects where you have not confirmed the Angular major/minor in package.json, or teams standardizing on a non-Angular framework.
When should I use this skill?
When implementing or refactoring DOM enter/leave animations in an Angular project.
What do I get? / Deliverables
After the skill runs, templates and CSS follow the correct v20.2+ animate.enter/leave pattern or a justified legacy animation package approach for older apps.
- Version-appropriate animate.enter/leave markup
- Matching CSS keyframes or transitions
- Documented fallback path for pre-v20.2 @angular/animations
Recommended Skills
Journey fit
How it compares
Use instead of generic CSS animation chat that ignores Angular version gates and built-in enter/leave lifecycle.
Common Questions / FAQ
Who is angular-developer for?
Indie and solo frontend builders shipping Angular apps who want an agent to pick the right animation stack for their installed Angular version.
When should I use angular-developer?
Use it in the Build phase when adding enter/leave effects to components, refactoring off @angular/animations on v20.2+, or debugging animation classes that never clear.
Is angular-developer safe to install?
Review the Security Audits panel on this Prism page and your repo policies before enabling any third-party skill; this skill mainly guides file reads and code edits.
SKILL.md
READMESKILL.md - Angular Developer
# Angular Animations When animating elements in Angular, **first analyze the project's Angular version** in `package.json`. For modern applications (**Angular v20.2 and above**), prefer using native CSS with `animate.enter` and `animate.leave`. For older applications, you may need to use the deprecated `@angular/animations` package. ## 1. Native CSS Animations (v20.2+ Recommended) Modern Angular provides `animate.enter` and `animate.leave` to animate elements as they enter or leave the DOM. They apply CSS classes at the appropriate times. ### `animate.enter` and `animate.leave` Use these directly on elements to apply CSS classes during the enter or leave phase. Angular automatically removes the enter classes when the animation completes. For `animate.leave`, Angular waits for the animation to finish before removing the element from the DOM. `animate.enter` example: ```html @if (isShown()) { <div class="enter-container" animate.enter="enter-animation"> <p>The box is entering.</p> </div> } ``` ```css /* Ensure you have a starting style if using transitions instead of keyframes */ .enter-container { border: 1px solid #dddddd; margin-top: 1em; padding: 20px; font-weight: bold; font-size: 20px; } .enter-container p { margin: 0; } .enter-animation { animation: slide-fade 1s; } @keyframes slide-fade { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } ``` _Note: `animate.leave` may be added to child elements being removed._ ### Event Bindings and Third-party Libraries You can bind to `(animate.enter)` and `(animate.leave)` to call functions or use JS libraries like GSAP. ```html @if(show()) { <div (animate.leave)="onLeave($event)">...</div> } ``` ```ts import { AnimationCallbackEvent } from '@angular/core'; onLeave(event: AnimationCallbackEvent) { // Custom animation logic here // CRITICAL: You MUST call animationComplete() when done so Angular removes the element! event.animationComplete(); } ``` ## 2. Advanced CSS Animations CSS offers robust tools for advanced animation sequences. ### Animating State and Styles Toggle CSS classes on elements using property binding to trigger transitions. ```html <div [class.open]="isOpen">...</div> ``` ```css div { transition: height 0.3s ease-out; height: 100px; } div.open { height: 200px; } ``` ### Animating Auto Height You can use `css-grid` to animate to auto height. ```css .container { display: grid; grid-template-rows: 0fr; transition: grid-template-rows 0.3s; } .container.open { grid-template-rows: 1fr; } .container > div { overflow: hidden; } ``` ### Staggering and Parallel Animations - **Staggering**: Use `animation-delay` or `transition-delay` with different values for items in a list. - **Parallel**: Apply multiple animations in the `animation` shorthand (e.g., `animation: rotate 3s, fade-in 2s;`). ### Programmatic Control Retrieve animations directly using standard Web APIs: ```ts const animations = element.getAnimations(); animations.forEach((anim) => anim.pause()); ``` ## 3. Legacy Animations DSL (Deprecated) For older projects (pre v20.2 or where `@angular/animations` is already heavily used), you use the component metadata DSL. **Important:** Do not mix legacy animations and `animate.enter`/`leave` in the same component. ### Setup ```ts bootstrapApplication(App, { providers: [provideAnimationsAsync()], }); ``` ### Defining Transitions ```ts import {signal} from '@angular/core'; import {trigger, state, style, animate, transition} from '@angular/animations'; @Component({ animations: [ trigger('openClose', [ state('open', style({opacity: 1})), state('closed', style({opacity: 0})), transition('open <=> closed', [animate('0.5s')]), ]), ], template: `<div [@openClose]="isOpen() ? 'open' : 'closed'">...</div>`, }) export class OpenClose { isOpen = signal(true); } ``` # Angular Aria Angular Aria (`@angular/ari