What your agent
reads before it
writes Angular.
An agent trained on a decade of Angular releases writes a decade of Angular: an API from a version you are not on, a pattern retired two majors ago, a workaround for a bug that was fixed. Each skill here is pinned to one major version, so the agent works from the API surface your project actually has.
01Why the version is the product
A general Angular rule set has to hedge. It cannot tell an agent that @defer exists without also covering the projects where it does not, so it says both — and the agent picks whichever it saw more of during training.
A version-pinned skill does not hedge. It states one API surface: what is new in this major, what graduated to stable, what is still experimental and will change without a deprecation cycle, and what was removed. A symbol from the wrong major fails at compile time, which you notice. An experimental one compiles fine and breaks on the next upgrade, which you do not — and that is the failure this reference exists to prevent.
The versions on sale make the point between them. On Angular 22 a component with no changeDetection is OnPush and a new application is zoneless; on Angular 21 it is check-always and zone-based. Signal forms and resource are settled API on one and experimental on the other. HttpClient defaults to fetch on one and to XHR on the other. Each skill states its own version’s answer, and flags where the neighbouring major’s advice would quietly mislead — which is the same reason you install the one that matches your package.json, not the newest.
02What is in the set
You buy the set, and every version in it. Each skill — Angular 21 and Angular 22 today — is one SKILL.md that routes the agent to the right topic and 42 reference files behind it, around 38,000 words the agent loads on demand rather than carrying in every prompt. Same areas in every version, different answers:
Anatomy and metadata, template control flow, signal inputs and model inputs, signal outputs, host bindings and attribute injection.
signal and computed, reactive contexts and untracked, linkedSignal for state derived from state you still write to, resource for async data, and the section on when an effect is the wrong tool.
toSignal / toObservable, tearing subscriptions down with takeUntilDestroyed and DestroyRef, when .subscribe() inside a component is actually justified, and the traps in shareReplay.
The defaults Angular 22 flipped — components are OnPush unless told otherwise, new applications are zoneless, and on Angular 21 both are the other way round — plus @defer, track, NgOptimizedImage, bundle budgets, and what zoneless makes pointless.
provideHttpClient, interceptors as functions, and httpResource for a request that lives as signal state.
All three APIs — signal, reactive, template-driven — and the rule for choosing between them, so the agent does not introduce a fourth style into a codebase that already picked one.
inject() and injection context, providedIn and manual providers, InjectionToken, useClass / useValue / useFactory, and the environment-versus-element injector hierarchy.
Route definitions, loading strategies, outlets, guards, resolvers, the navigation lifecycle, CSR / SSG / SSR with hydration, and View Transitions between routes.
Angular Aria: building headless accordion, listbox, combobox, menu, tabs, toolbar, tree and grid, and styling off the ARIA attributes rather than a class you set alongside them.
Component styles and encapsulation, and animate.enter / animate.leave — native CSS animations, not the retired animations package.
What Angular sanitizes on its own, why bypassSecurityTrust* is almost always the wrong answer, CSP and nonces, XSRF in HttpClient, and where the client-side boundary actually ends.
Vitest and TestBed, async patterns, and RouterTestingHarness for navigation tests that do not flake.
ng-packagr and ng-package.json, secondary entry points, peerDependencies ranges, the public API surface, what breaks a consumer on strictTemplates, and how to deprecate without breaking them.
The CLI for scaffolding and building, the migration schematics for modernising existing code, and build-time versus runtime environment configuration.
03The two a general skill cannot have
The API reference — one in every skill, naming that skill’s version — is the boundary written down: the symbols new in this major, what graduated to stable, what is still @experimental or @developerPreview, what was removed or deprecated, and which symbols only arrive in the next major. The agent consults it before writing a symbol it is not certain about, and whenever a build error suggests one does not exist.
researching-angular.md covers what the skill does not: instead of answering from memory, the agent goes to angular/angular and angular/angular-cli — public API snapshots, deprecations with their replacements, breaking changes between majors, migration schematics — and quotes what it finds. The commands work with and without a GitHub token.
04Where it comes from
Google publishes official Angular skills under the MIT licence, and they are good. Thirty-five of the forty-two references in each skill start from that material: pinned to one major, cross-checked against that major’s API, and cut where a topic had no business being taught at all. That material stays MIT, each file carries a marker in its header, and the NOTICE ships with the product.
Seven references exist only here, and they are the ones an agent gets wrong most reliably: the API boundary, change detection, performance, RxJS interop, security, library authoring, and the research protocol above. Authoring a library is the one nobody else covers — the rules change the moment your code is compiled by someone else’s Angular version and bundler.
05How it installs
Run it in the root of the project the skills apply to. The installer asks which Angular version you want — pick the one your package.json is on. Files, not a service: nothing calls home, and no agent needs a plugin.
npx skills add git@github.com:ngguide/ultimate-angular-skills.git -a '*'The installer is vercel-labs/skills. -a '*' installs for every agent it knows about — Claude Code, Codex, Cursor, Copilot, Zed, Cline and the rest; name one instead (-a claude-code) to keep it to the agent you use. The skill lands in that agent’s skills directory — .claude/skills/ for Claude Code, the equivalent path elsewhere. Add -g to install at user level rather than into the project.
Later, npx skills update pulls the current version of everything you installed. Installing for several agents writes one copy and symlinks the rest; --copy turns that off, which is what you want when the project is moved around by Docker build contexts, some CI checkouts, or Windows without symlink permission.
A version is a skill, not a branch: each Angular major is its own directory in the same repository, so every project runs the same command and answers the prompt with its own version. Two projects on two majors, side by side, each get the right one — and upgrading Angular later means installing the next skill, which you already own.
06The licence, in short
The skills are licensed, not sold. An individual licence covers the one person who bought it; a team licence covers up to ten people inside a single organization, with seats reassignable as people come and go.
Using them in private repositories and in paid client work is expressly allowed, as is adapting them for your own projects. What is not: publishing the files anywhere public, bundling them into an open-source project, a template or a starter kit, passing them to anyone outside your licence, or stripping the attribution. The full terms ship with the product, and the MIT material described above is exempt from all of it.
07How to get it
$39, once, for one person. Access is a grant on the private repository above: after paying you link your GitHub account and the invitation goes out to it. Linking is the whole identification step — there is no field to type a username into, because a typo there hands a stranger the files and a wrong name is not something you would notice.
The price is tax-exclusive. Stripe is the merchant of record and calculates whatever tax applies where you are, which also means buyers in the countries Stripe restricts cannot pay — if you are in one of them, write to hello@ng.guide and it will be a person who answers.
Buying for a team, or for more than ten people, is that same address rather than a second button: the licence has a team form and the checkout does not sell it yet.
08What skills do not do
A skill tells an agent how to write code it already knows how to write. It does not teach you anything — and if you cannot tell a good Angular decision from a bad one, a reference file only makes the bad ones arrive faster and better formatted.
The course is the other half of that problem. It runs through the same agent, on your machine, and builds a Material 3 component library one component at a time — so the judgement ends up in you rather than in a file the agent reads.