Skip to content
Development
Skill

/angular-security

Harden Angular apps against XSS, CSP violations, and unauthorized access. Use when implementing XSS protection, Content Security Policy, or auth guards in Angular.

From plugin
agent-skills-standard
538200 skills1 MCP
Install
$ npx -y skills add hoangnguyen0403/agent-skills-standard --skill angular-security --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/angular-security

Context preview

The summary Claude sees to decide when to auto-load this skill.

Harden Angular apps against XSS, CSP violations, and unauthorized access. Use when implementing XSS protection, Content Security Policy, or auth guards in Angular.

SKILL.md

angular-security.SKILL.md
name: angular-security
description: Harden Angular apps against XSS, CSP violations, and unauthorized access. Use when implementing XSS protection, Content Security Policy, or auth guards in Angular.
metadata:
  triggers:
    keywords:
    - DomSanitizer
    - innerHTML
    - sanitize(SecurityContext.HTML)
    - trusted HTML
    - CSP
    - angular security
    - route guard

Security

**Priority: P0 (CRITICAL)**

Principles

  • **XSS Prevention**: Angular sanitizes interpolated values by default — **{{ userInput }} safe**. NOT use `innerHTML` unless absolutely necessary (e.g., trusted static CMS content). For user-generated content, display as text with **{{ content }} — never as HTML**.
  • **Trusted HTML APIs**: Mark HTML as trusted only for content you control (e.g., vetted CMS headers). Never mark user-provided data as trusted. Prefer **DomSanitizer.sanitize(SecurityContext.HTML, content)** and review every trust-marking call as a potential XSS vector.
  • **Route Guards**: Protect all sensitive routes with functional **CanActivateFn** (e.g., **inject(Router).createUrlTree(['/login'])**). Apply with **canActivate: [authGuard]**.

Guidelines

  • **CSP**: Configure **CSP headers on server** (not in Angular source). Use **nonce-based CSP** with **script-src 'nonce-{nonce}'** and avoid unsafe-inline/unsafe-eval.
  • **HTTP**: Use Interceptors to attach secure tokens. Use **HttpOnly cookies** managed by server — **not localStorage** or sessionStorage because they accessible via XSS.
  • **Secrets**: **Never store API keys** or secrets in Angular source code or bundle.

Anti-Patterns

  • **No trust-marking on user input**: Trust Angular's sanitization; reserve trusted HTML APIs for verified static content only.
  • **No localStorage for tokens**: Use HttpOnly cookies via interceptors for auth tokens.
  • **No secrets in source**: Never embed API keys or secrets in Angular bundle code.

References

  • [Security Best Practices](references/security-best-practices.md)
  • common/security-standards

CSP and secret checklist

  • Use a server-generated, per-response nonce in `script-src 'nonce-{nonce}'`; do not use a static nonce.
  • Keep controlled provenance explicit: trust-mark only controlled and verified or vetted static CMS content.
  • Do not put API keys or other secrets in the compiled bundle.

Canonical response anchors

  • Additional task-grounded exact anchors: {{ content }}
Read more
Ships withagent-skills-standard

The portable SDLC standards layer for AI coding agents. Sync once, then work in your own runtime.

Get the whole plugin

Other skills on agent-skills-standard.