
Angular Tooling
Standardize Angular workspace tooling—schematics, budgets, monorepo layout, CI/CD, aliases, and dev proxy—for faster solo shipping.
Overview
angular-tooling is an agent skill for the Build phase that guides custom Angular schematics, build budgets, workspace layout, CI/CD, aliases, and proxy configuration.
Install
npx skills add https://github.com/analogjs/angular-skills --skill angular-toolingWhat is this skill?
- Custom @angular-devkit/schematics collections with template/move/mergeWith flows
- Build budget examples: initial bundle 500kB warn / 1MB error and component style caps
- Multi-project workspace patterns for monorepos
- CI/CD configuration guidance for Angular pipelines
- Path aliases and dev-server proxy setup for local API integration
- Documented budget example: 500kB warning and 1MB error on initial bundle
- Six tooling sections: schematics, build optimization, multi-project workspace, CI/CD, path aliases, proxy
Adoption & trust: 4.3k installs on skills.sh; 592 GitHub stars; 3/3 security scanners passed (skills.sh audits).
What problem does it solve?
Your Angular monorepo lacks consistent generators and build guardrails, so every feature duplicates boilerplate and bundle size regressions slip into production.
Who is it for?
Indie SaaS or internal tools on Angular who customize ng generate and need agent help on angular.json, schematics, and pipeline config.
Skip if: Greenfield React/Vue projects or Angular teams that only need component/routing patterns without CLI or build tooling.
When should I use this skill?
Customizing Angular CLI schematics, angular.json budgets, monorepo layout, CI/CD for ng builds, path aliases, or local API proxy configuration.
What do I get? / Deliverables
You get scaffolded components via custom schematics, enforced bundle budgets, and documented CI/proxy/alias setup ready for the next feature branch.
- Schematic collection source and ng generate usage
- angular.json budget and workspace/CI/proxy configuration snippets
Recommended Skills
Journey fit
Angular tooling sits in Build because it configures how the app is generated, bundled, and validated before anything ships. Frontend is canonical: schematics, ng budgets, path aliases, and proxy configs are Angular app delivery concerns.
How it compares
Skill package for Angular CLI and workspace mechanics—not a component design or state-management playbook.
Common Questions / FAQ
Who is angular-tooling for?
Solo and small-team builders on Angular who own the CLI, build config, and deployment pipeline—not just UI components.
When should I use angular-tooling?
During Build frontend work when creating schematics, setting bundle budgets, configuring multi-project workspaces, path aliases, dev proxies, or CI steps for ng build and test.
Is angular-tooling safe to install?
It describes local CLI and npm workflows; check the Security Audits panel on this page and vet any schematic that writes files or runs shell commands in your environment.
SKILL.md
READMESKILL.md - Angular Tooling
# Angular Tooling Patterns ## Table of Contents - [Custom Schematics](#custom-schematics) - [Build Optimization](#build-optimization) - [Multi-Project Workspace](#multi-project-workspace) - [CI/CD Configuration](#cicd-configuration) - [Path Aliases](#path-aliases) - [Proxy Configuration](#proxy-configuration) ## Custom Schematics ### Generate Schematic Collection ```bash # Install schematics CLI npm install -g @angular-devkit/schematics-cli # Create schematic collection schematics blank --name=my-schematics ``` ### Simple Component Schematic ```typescript // src/my-component/index.ts import { Rule, SchematicContext, Tree, apply, url, template, move, mergeWith } from '@angular-devkit/schematics'; import { strings } from '@angular-devkit/core'; export function myComponent(options: { name: string; path: string }): Rule { return (tree: Tree, context: SchematicContext) => { const templateSource = apply(url('./files'), [ template({ ...options, ...strings, }), move(options.path), ]); return mergeWith(templateSource)(tree, context); }; } ``` ### Use Custom Schematics ```bash # Link locally npm link ./my-schematics # Use ng generate my-schematics:my-component --name=test --path=src/app ``` ## Build Optimization ### Budget Configuration ```json { "budgets": [ { "type": "initial", "maximumWarning": "500kB", "maximumError": "1MB" }, { "type": "anyComponentStyle", "maximumWarning": "4kB", "maximumError": "8kB" }, { "type": "anyScript", "maximumWarning": "100kB", "maximumError": "200kB" } ] } ``` ### Differential Loading Automatic in v20+ - builds for modern browsers by default. ```json // .browserslistrc last 2 Chrome versions last 2 Firefox versions last 2 Safari versions last 2 Edge versions ``` ### Code Splitting ```typescript // Lazy load routes for automatic code splitting export const routes: Routes = [ { path: 'admin', loadChildren: () => import('./admin/admin.routes').then(m => m.adminRoutes), }, { path: 'reports', loadComponent: () => import('./reports/reports.component').then(m => m.Reports), }, ]; ``` ### Tree Shaking Ensure proper imports for tree shaking: ```typescript // Good - tree shakeable import { map, filter } from 'rxjs'; // Avoid - imports entire library import * as rxjs from 'rxjs'; ``` ### Preload Strategy ```typescript // app.config.ts import { provideRouter, withPreloading, PreloadAllModules } from '@angular/router'; export const appConfig: ApplicationConfig = { providers: [ provideRouter(routes, withPreloading(PreloadAllModules)), ], }; ``` ## Multi-Project Workspace ### Create Workspace ```bash # Create empty workspace ng new my-workspace --create-application=false cd my-workspace # Add applications ng generate application main-app ng generate application admin-app # Add library ng generate library shared-ui ng generate library data-access ``` ### Workspace Structure ``` my-workspace/ ├── projects/ │ ├── main-app/ │ │ └── src/ │ ├── admin-app/ │ │ └── src/ │ ├── shared-ui/ │ │ └── src/ │ └── data-access/ │ └── src/ ├── angular.json └── package.json ``` ### Build Specific Project ```bash ng build main-app ng build shared-ui ng serve admin-app ``` ### Library Configuration ```json // projects/shared-ui/ng-package.json { "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", "dest": "../../dist/shared-ui", "lib": { "entryFile": "src/public-api.ts" } } ``` ### Using Library in App ```typescript // After building library: ng build shared-ui import { Button } from 'shared-ui'; @Component({ imports: [Button], template: `<lib-button>Click</lib-button>`, }) export class App {} ``` ## CI/CD Configuration ### GitHub Actions ```yaml # .github/workflows/ci.yml name: CI on: push: branches: [main] pull_request: branches: [main] jobs: build: runs-