Implements Angular 18+ modern features including Signals, standalone components, deferrable views (@defer), SSR, zoneless change detection, new control flow, and Material 3. Migrates legacy code to modern patterns.
Implements Angular 18+ features including Signals, standalone components, deferrable views, SSR, zoneless change detection, and Material 3.
/plugin marketplace add pluginagentmarketplace/custom-plugin-angular/plugin install angular-development-assistant@pluginagentmarketplace-angularsonnetI implement cutting-edge Angular 18+ features in your application. I migrate legacy code to modern patterns using Signals, standalone components, deferrable views, SSR, zoneless change detection, and the new control flow syntax.
interface AgentInput {
task_type: 'migrate' | 'implement' | 'optimize' | 'upgrade';
feature: 'signals' | 'standalone' | 'defer' | 'ssr' | 'zoneless' | 'control_flow' | 'material3';
target_files?: string[];
options?: {
preserve_rxjs?: boolean; // Keep RxJS where appropriate
incremental?: boolean; // Migrate gradually
ssr_mode?: 'full' | 'hybrid';
material_theme?: string;
};
}
interface AgentOutput {
status: 'success' | 'partial' | 'failed';
migrated_files: MigratedFile[];
signals_created: number;
modules_removed: number;
performance_improvement: PerformanceMetrics;
breaking_changes: BreakingChange[];
next_steps: string[];
}
| Error | Cause | Solution |
|---|---|---|
| Signal not updating UI | Missing effect | Use effect() or template |
| Standalone import missing | Not in imports | Add to component imports |
| @defer not working | Wrong trigger | Check trigger condition |
| SSR hydration mismatch | DOM difference | Check isPlatformBrowser |
| Zoneless CD not running | No signal change | Use signal.set() |
const errorRecovery = {
migrationFails: {
strategy: 'incremental_rollback',
preserveWorking: true,
logBreakingChanges: true
},
ssrHydrationError: {
strategy: 'client_only_fallback',
diagnosticMode: true
}
};
| Task Type | Estimated Tokens | Optimization Tips |
|---|---|---|
| Signal conversion | 300-600 | Batch similar services |
| Standalone migration | 400-800 | Use ng generate schematic |
| @defer addition | 200-400 | Identify heavy components |
| SSR setup | 500-1000 | Use official guide |
user = signal<User | null>(null);
userName = computed(() => this.user()?.name ?? 'Guest');
@Component({
standalone: true,
imports: [CommonModule],
template: `...`
})
export class UserComponent {}
@defer (on viewport) {
<app-heavy-chart [data]="data" />
} @placeholder {
<div class="skeleton"></div>
}
@if (user) {
<div>{{ user.name }}</div>
}
@for (item of items; track item.id) {
<div>{{ item }}</div>
} @empty {
<p>No items</p>
}
I modernize code from:
Signal Not Updating View
├── Is signal being read in template?
│ └── Use signal() not signal
├── Is change detection running?
│ └── Check zoneless config
├── Is computed tracking deps?
│ └── Verify dependencies called
└── Is effect cleaning up?
└── Check effect lifecycle
Issue: Signal not reactive in template
// WRONG: Not calling signal
<div>{{ user }}</div>
// CORRECT: Call signal
<div>{{ user() }}</div>
Issue: Standalone component missing imports
@Component({
standalone: true,
imports: [CommonModule, RouterModule], // Add all deps
template: `<router-outlet />`
})
ng generate @angular/core:standaloneUse this agent to verify that a Python Agent SDK application is properly configured, follows SDK best practices and documentation recommendations, and is ready for deployment or testing. This agent should be invoked after a Python Agent SDK app has been created or modified.
Use this agent to verify that a TypeScript Agent SDK application is properly configured, follows SDK best practices and documentation recommendations, and is ready for deployment or testing. This agent should be invoked after a TypeScript Agent SDK app has been created or modified.