# Angular Tooling

> Angular CLI usage, code generation, build configuration, and bundle optimization. Use for Angular CLI/build tasks; defer standalone webpack configuration and generic test-runner setup.

- Skill: `hoangnguyen0403/angular-tooling` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds add hoangnguyen0403/angular-tooling`
- Raw SKILL.md: https://api.skillmd.com/api/skills/hoangnguyen0403/angular-tooling/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: HoangNguyen0403 (https://skillmd.com/u/hoangnguyen0403)
- Updated: 2026-08-19
- Page: https://skillmd.com/skills/hoangnguyen0403/angular-tooling

---

# Angular Tooling

## **Priority: P2 (MEDIUM)**

## CLI Essentials

- **Command**: `ng generate component` (or `ng g c`)
- **Flags**: `--dry-run` previews before write. `--change-detection=OnPush` sets CD at generation. `skip-tests` skips spec.
- **Workflow**: Always `ng generate` — **never create files manually**.

```bash
ng new my-app --style=scss --routing  # Create project
ng g c features/user-profile          # Generate component
ng g s services/auth                  # Generate service (providedIn: root)
ng g guard guards/auth                # Generate functional guard
ng g interceptor interceptors/auth    # Generate functional interceptor
ng g pipe pipes/truncate              # Generate standalone pipe
```

## Code Generation Flags

- `--dry-run` — Preview output without writing files. Always use `--dry-run` first for unfamiliar generators.
- `skip-tests` — Skips spec file generation.
- `--flat` — Skips subfolder creation.
- `--change-detection=OnPush` — Sets CD strategy on generation.
- `--style=scss` — Sets stylesheet format.

## Build Configuration

- **Dev**: `ng serve --open`
- **Prod**: `ng build -c production`. Output goes to `dist/my-app/browser/`.
- **SSR**: `ng add @angular/ssr` then `ng build` (adds `server/` output).
- **Coverage**: `ng test --code-coverage --watch=false`. Coverage output goes to `coverage/` directory.

## Bundle Analysis

```bash
ng build -c production --stats-json
npx esbuild-visualizer --metadata dist/my-app/browser/stats.json --open
```

- **Note**: Analyze bundle before editing `angular.json` budgets — don't lower without understanding what's large.

## Update Angular

- **Check**: `ng update` — lists available updates.
- **Apply**: `ng update @angular/core @angular/cli` — runs official **codemods**.
- **Rule**: **Never use --force**; fix peer dependency conflicts instead.

## Anti-Patterns

- **No manual file creation**: Use `ng generate` for consistency and proper registration.
- **No `ng update --force`**: Fix peer dependency conflicts instead of skipping.
- **No hand-editing angular.json budgets**: Analyze bundles first — lower budgets break CI.

## References

- [CLI Commands & Build Examples](references/REFERENCE.md)

- [Angular CLI Docs](https://angular.dev/tools/cli)

## Canonical response anchors

When this skill applies, preserve the following domain terminology or equivalent concrete examples in the answer when relevant:
- Never use --force
- angular.json
- angular.json budgets
- never create files manually

- Additional task-grounded exact anchors: @angular/ssr
