angular-migration
Faz seu agente migrar aplicações de AngularJS para Angular. Ele ajuda a modernizar códigos antigos.
O que ela faz
Esta ferramenta ajuda a atualizar seu código de um framework antigo (AngularJS) para um mais novo (Angular). Ela permite fazer isso aos poucos, mantendo as duas versões funcionando juntas temporariamente.
Quando usar
- ✓Quando você precisa atualizar um projeto antigo de AngularJS para Angular.
- ✓Se você quer rodar partes do seu aplicativo em AngularJS e partes em Angular ao mesmo tempo.
- ✓Para transformar partes antigas do código (diretivas) em componentes modernos.
Exemplo do que pedir para a IA
“Como posso começar a migrar meu projeto de AngularJS para Angular gradualmente?”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
A ferramenta usa uma técnica chamada 'ngUpgrade' para fazer o AngularJS e o Angular conversarem entre si. Você pode migrar funcionalidades uma por uma, sem precisar reescrever tudo de uma vez.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add wshobson/agents --skill angular-migrationOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/wshobson/agents/main/plugins/framework-migration/skills/angular-migration/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Migração Angular
Domine a migração do AngularJS para o Angular, incluindo aplicativos híbridos, conversão de componentes, mudanças na injeção de dependência e migração de roteamento.
Quando Usar Esta Habilidade
- Migrando aplicativos AngularJS (1.x) para Angular (2+)
- Executando aplicativos híbridos AngularJS/Angular
- Convertendo diretivas em componentes
- Modernizando a injeção de dependência
- Migrando sistemas de roteamento
- Atualizando para as versões mais recentes do Angular
- Implementando as melhores práticas do Angular
Estratégias de Migração
1. Big Bang (Reescrita Completa)
- Reescrever o aplicativo inteiro em Angular
- Desenvolvimento paralelo
- Mudar de uma vez
- Melhor para: Aplicativos pequenos, projetos novos (green field)
2. Incremental (Abordagem Híbrida)
- Executar AngularJS e Angular lado a lado
- Migrar funcionalidade por funcionalidade
- ngUpgrade para interoperabilidade
- Melhor para: Aplicativos grandes, entrega contínua
3. Fatia Vertical
- Migrar uma funcionalidade completamente
- Novas funcionalidades em Angular, manter as antigas em AngularJS
- Substituir gradualmente
- Melhor para: Aplicativos médios, funcionalidades distintas
Configuração de Aplicativo Híbrido
// main.ts - Bootstrap hybrid app
import { platformBrowserDynamic } from "@angular/platform-browser-dynamic";
import { UpgradeModule } from "@angular/upgrade/static";
import { AppModule } from "./app/app.module";
platformBrowserDynamic()
.bootstrapModule(AppModule)
.then((platformRef) => {
const upgrade = platformRef.injector.get(UpgradeModule);
// Bootstrap AngularJS
upgrade.bootstrap(document.body, ["myAngularJSApp"], { strictDi: true });
});
// app.module.ts
import { NgModule } from "@angular/core";
import { BrowserModule } from "@angular/platform-browser";
import { UpgradeModule } from "@angular/upgrade/static";
@NgModule({
imports: [BrowserModule, UpgradeModule],
})
export class AppModule {
constructor(private upgrade: UpgradeModule) {}
ngDoBootstrap() {
// Bootstrapped manually in main.ts
}
}
Migração de Componentes
Controlador AngularJS → Componente Angular
// Before: AngularJS controller
angular
.module("myApp")
.controller("UserController", function ($scope, UserService) {
$scope.user = {};
$scope.loadUser = function (id) {
UserService.getUser(id).then(function (user) {
$scope.user = user;
});
};
$scope.saveUser = function () {
UserService.saveUser($scope.user);
};
});
// After: Angular component
import { Component, OnInit } from "@angular/core";
import { UserService } from "./user.service";
@Component({
selector: "app-user",
template: `
<div>
<h2>{{ user.name }}</h2>
<button (click)="saveUser()">Save</button>
</div>
`,
})
export class UserComponent implements OnInit {
user: any = {};
constructor(private userService: UserService) {}
ngOnInit() {
this.loadUser(1);
}
loadUser(id: number) {
this.userService.getUser(id).subscribe((user) => {
this.user = user;
});
}
saveUser() {
this.userService.saveUser(this.user);
}
}
Diretiva AngularJS → Componente Angular
// Before: AngularJS directive
angular.module("myApp").directive("userCard", function () {
return {
restrict: "E",
scope: {
user: "=",
onDelete: "&",
},
template: `
<div class="card">
<h3>{{ user.name }}</h3>
<button ng-click="onDelete()">Delete</button>
</div>
`,
};
});
// After: Angular component
import { Component, Input, Output, EventEmitter } from "@angular/core";
@Component({
selector: "app-user-card",
template: `
<div class="card">
<h3>{{ user.name }}</h3>
<button (click)="delete.emit()">Delete</button>
</div>
`,
})
export class UserCardComponent {
@Input() user: any;
@Output() delete = new EventEmitter<void>();
}
// Usage: <app-user-card [user]="user" (delete)="handleDelete()"></app-user-card>
Migração de Serviços
// Before: AngularJS service
angular.module("myApp").factory("UserService", function ($http) {
return {
getUser: function (id) {
return $http.get("/api/users/" + id);
},
saveUser: function (user) {
return $http.post("/api/users", user);
},
};
});
// Depois: Serviço Angular
import { Injectable } from "@angular/core";
import { HttpClient } from "@angular/common/http";
import { Observable } from "rxjs";
@Injectable({
providedIn: "root",
})
export class UserService {
…
Perguntas frequentes
O que é 'hybrid mode'?
É um modo onde o código antigo (AngularJS) e o novo (Angular) podem funcionar juntos no mesmo projeto durante a migração.
Qual a diferença entre 'Big Bang' e 'Incremental'?
Big Bang é reescrever tudo de uma vez. Incremental é mudar aos poucos, mantendo as duas versões funcionando juntas.
Posso usar isso para atualizar para a versão mais recente do Angular?
Sim, a ferramenta ajuda a modernizar seu código e a adotar as melhores práticas das versões mais recentes do Angular.
Detalhes
Descrição original do autor
Migrate from AngularJS to Angular using hybrid mode, incremental component rewriting, and dependency injection updates. Use when upgrading AngularJS applications, planning framework migrations, or modernizing legacy Angular code.
repo: wshobson/agents
Popularidade
- Estrelas no GitHub
- 41 mil
- Posição no ranking
- #4862
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
screen-reader-testing
Faz seu agente testar sites usando leitores de tela para garantir que sejam acessíveis.
wshobson/agents
wcag-audit-patterns
Ajuda seu agente a auditar sites para acessibilidade e corrigir problemas de acordo com as diretrizes WCAG.
wshobson/agents
multi-reviewer-patterns
Faz seu agente coordenar revisões de código paralelas, deduplicando achados e consolidando relatórios.
wshobson/agents
parallel-debugging
Permite ao agente depurar problemas complexos com investigações paralelas e análise de causa raiz.
wshobson/agents
Skills parecidas
angular-developer
Ajuda seu agente a criar código Angular e a dar conselhos sobre a estrutura do projeto. É útil para iniciar novos projetos, criar partes do código ou melhorar a performance e acessibilidade.
affaan-m/ECC
frontend-a11y
Ajuda seu agente a tornar interfaces web acessíveis para todos. Ele garante que sites e apps funcionem bem com leitores de tela e navegação por teclado.
affaan-m/ECC
frontend-patterns
Faz seu agente aplicar padrões modernos no desenvolvimento frontend. Ele otimiza performance, gerencia estado e segue boas práticas em React e Next.js.
affaan-m/ECC