Explains the mental model and architecture of the code under `packages/compiler-cli`. You MUST use this skill any time you plan to work with code in `packages/compiler-cli`
npx skills add https://github.com/angular/angular --skill reference-compiler-cli
ngtsc) ArchitectureThe packages/compiler-cli package contains the Angular Compiler (Ivy), often referred to as ngtsc. It is a wrapper around the TypeScript compiler (tsc) that extends it with Angular-specific capabilities.
The core goal of ngtsc is to compile Angular decorators (like @Component, @Directive, @Pipe) into static properties on the class (Ivy instructions, e.g., static ɵcmp = ...). It also performs template type checking and ahead-of-time (AOT) compilation.
The compiler is designed as a lazy, incremental, and partial compilation pipeline.
NgtscProgram wraps the standard ts.Program. It intercepts calls to act as a drop-in replacement for standard tooling.o.Expression) for the generated code, which is then translated into TypeScript AST nodes during the emit phase.ngtsc/core)NgtscProgram: The public API implementing api.Program. It manages the ts.Program and the NgCompiler.NgCompiler: The brain of the compiler. It orchestrates the compilation phases (Analysis, Resolution, Type Checking, Emit). It holds the TraitCompiler.ngtsc/transform)TraitCompiler: Manages the lifecycle of "Traits". It iterates over source files, identifies decorated classes, and delegates to the appropriate DecoratorHandler.Trait: A state container for a class, holding its handler, analysis results, and resolution results.ngtsc/annotations)DecoratorHandler: An interface for handling specific decorators.ComponentDecoratorHandler: The most complex handler. It:R3TargetBinder).ɵcmp instruction.DirectiveDecoratorHandler, PipeDecoratorHandler, NgModuleDecoratorHandler: Handle their respective decorators.ngtsc/typecheck)TemplateTypeChecker: Generates "Type Check Blocks" (TCBs). A TCB is a block of TypeScript code that represents the template's logic in a way tsc can understand and check for errors.TypeCheckBlock: The actual generated code that validates bindings, events, and structural directives.ngtsc/metadata, ngtsc/scope)MetadataReader: Reads Angular metadata from source files (using LocalMetadataRegistry) and .d.ts files (using DtsMetadataReader).ScopeRegistry: Determines the "compilation scope" of a component (which directives/pipes are available to it), handling NgModule transitive exports and Standalone Component imports.ngtsc/transform)ivyTransformFactory: A TypeScript transformer factory.IvyCompilationVisitor: Visits classes, triggers compilation via TraitCompiler, and collects the Output AST.IvyTransformationVisitor: Translates the Output AST into TypeScript AST, injects the static ɵ... fields, and removes the original decorators.NgtscProgram creates NgCompiler, which sets up all registries and the TraitCompiler.analyzeSync):TraitCompiler scans files.DecoratorHandlers extract metadata and parse templates.resolve):TraitCompiler resolves traits.ScopeRegistry).TemplateTypeChecker creates TCBs for all components.prepareEmit):ivyTransformFactory is created.emit is called.packages/compiler-cli/src/ngtsc/program.ts: Entry point (NgtscProgram).packages/compiler-cli/src/ngtsc/core/src/compiler.ts: Core logic (NgCompiler).packages/compiler-cli/src/ngtsc/transform/src/trait.ts: Trait state machine.packages/compiler-cli/src/ngtsc/annotations/component/src/handler.ts: Component compilation logic.packages/compiler-cli/src/ngtsc/typecheck/src/template_type_checker.ts: Type checking logic.packages/compiler-cli/src/ngtsc/transform/src/transform.ts: AST transformation logic.Guide for creating high-quality MCP (Model Context Protocol) servers that enable LLMs to interact with external services through well-designed tools. Use when building MCP servers to integrate external APIs or services, whether in Python (FastMCP) or Node/TypeScript (MCP SDK).
Use when implementation is complete, all tests pass, and you need to decide how to integrate the work - guides completion of development work by presenting structured options for merge, PR, or cleanup
Automatically creates user-facing changelogs from git commits by analyzing commit history, categorizing changes, and transforming technical commits into clear, customer-friendly release notes. Turns hours of manual changelog writing into minutes of automated generation.
Guide for creating high-quality MCP (Model Context Protocol) servers that enable LLMs to interact with external services through well-designed tools. Use when building MCP servers to integrate external APIs or services, whether in Python (FastMCP) or Node/TypeScript (MCP SDK).
React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React/Next.js code to ensure optimal performance patterns. Triggers on tasks involving React components, Next.js pages, data fetching, bundle optimization, or performance improvements.
React Native and Expo best practices for building performant mobile apps. Use when building React Native components, optimizing list performance, implementing animations, or working with native modules. Triggers on tasks involving React Native, Expo, mobile performance, or native platform APIs.
Use when starting feature work that needs isolation from current workspace or before executing implementation plans - creates isolated git worktrees with smart directory selection and safety verification
Next.js best practices - file conventions, RSC boundaries, data patterns, async APIs, metadata, error handling, route handlers, image/font optimization, bundling
Take angular/reference-compiler-cli from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.