Auditeur de specs Angular

VérifiéPrudence

Audit indépendant d'un fichier spec Angular selon les règles de migration du projet : vérification ESLint stricte, structure du spec, nommage et usage de TestBed.

Spar Skills Guide Bot
TestingAvancé
31/10/2026
Claude Code
#angular#unit-testing#jest#code-audit#eslint

Recommandé pour

Synthèse automatique

Audite de façon indépendante un fichier de spécification de composant Angular par rapport aux règles de migration du projet, puis corrige les violations détectées.

Points forts

  • Liste de contrôle précise couvrant structure, nommage, en-têtes SPDX et couverture des comportements du template
  • Exécute la configuration ESLint stricte utilisée en CI et traite chaque erreur comme un échec
  • Privilégie TestBed.inject avec jest.spyOn plutôt que useValue, avec des exceptions clairement documentées
  • Applique les corrections dans le fichier de spec et produit un rapport des points corrigés

Limites

  • Dépend de fichiers propres au projet (.claude/rules/angular-specs.md et .eslintrc.strict-specs.js) qui doivent exister
  • Ne peut pas corriger automatiquement une couverture de test manquante et la fin de la section rapport semble tronquée
  • Suppose une stack Angular/Jest et des composants non standalone ou déjà standalone selon le cas
Quand l'utiliser

À utiliser lorsqu'il faut vérifier et corriger un fichier .component.spec.ts Angular avant une migration ou une revue de code.

Quand l'éviter

À éviter pour des tests non Angular ou pour auditer le code source du composant lui-même plutôt que sa spécification.

Analyse de sécurité

Prudence
Score qualité80/100

The skill is a straightforward developer-audit workflow: read a spec, run the project's ESLint check, apply style fixes, report. There is no exfiltration, no destructive command, no obfuscation, and no attempt to disable safety controls. The caution rating comes from the execution surface: it shells out to `npx eslint` with a repository-supplied config (executable JS), trusts a project rules file as its source of truth, and edits files in place without declared tool scoping.

Points d'attention
  • •Runs `ESLINT_USE_FLAT_CONFIG=false npx eslint -c .eslintrc.strict-specs.js ...` — this executes a repo-local ESLint config file (JavaScript) and resolves npm dependencies, i.e. arbitrary code from the checked-out repository runs as a side effect of the audit.
  • •Instructs the agent to read `.claude/rules/angular-specs.md` and derive its audit criteria from it; content in that project file is an unvetted instruction channel that could redirect the agent's behavior (prompt-injection surface).
  • •Performs in-place edits to files in the working tree (spec files); the 'do not touch any component source files' guard is enforced only by model compliance, not technically.
  • •No tools are declared in `allowed-tools` even though the workflow requires shell execution and file writes — the effective permission surface is undefined and depends entirely on the host agent's defaults.
  • •Executes shell commands (`ESLINT_USE_FLAT_CONFIG=false npx eslint -c ...`) from `src/main/app/` using an interpolated spec path from `$ARGUMENTS`; `npx` may resolve/install packages, and the path is not quoted or validated, so a crafted path could alter the command (a human-supplied arg, so low exploitability).
  • •Writes to files in the repo (Step 3 auto-edits the spec). Scope is constrained to spec files with an explicit prohibition on touching component sources, which is reasonable but still an unguarded file-modification capability.
Comment cette analyse est faite

Exemples

Audit a specific spec
Audit src/main/app/src/app/taken/taken-vrijgeven-dialog/taken-vrijgeven-dialog.component.spec.ts against our Angular migration guidelines and fix all violations.
Run the slash command
/audit-ng-spec-skill src/app/users/user-list.component.spec.ts
Check a newly added spec
Please check this new Angular spec for smoke tests, useValue mocks, naming issues, and missing SPDX header: src/app/orders/orders.component.spec.ts

Angular Spec Auditor

Independently audit an Angular component spec file against the project's migration guidelines.

Usage: /audit-ng-spec-skill $ARGUMENTS $ARGUMENTS = path to the spec file (relative from repo root), e.g. src/main/app/src/app/taken/taken-vrijgeven-dialog/taken-vrijgeven-dialog.component.spec.ts

If $ARGUMENTS is omitted, ask the user for the spec path before proceeding.


You did NOT write this spec. Treat it with completely fresh eyes.

Step 1 — Read context

  1. Read .claude/rules/angular-specs.md.
  2. Read the spec at {SPEC_PATH}.
  3. Derive the component path from the spec path (same directory, .component.ts instead of .component.spec.ts), read it.
  4. Derive the template path (.component.html), read it if it exists.
  5. From src/main/app/, run the check that CI applies to a touched spec, and treat every problem it reports as a FAIL: ESLINT_USE_FLAT_CONFIG=false npx eslint -c .eslintrc.strict-specs.js <spec path relative to src/main/app>. It already covers any, NO_ERRORS_SCHEMA, DOM queries outside Testing Library, and object literals cast through unknown.

Step 2 — Audit

For each item, mark PASS or FAIL with a one-line reason and the exact line(s) involved.

Rules

  • [ ] No : void return type annotations anywhere in the spec
  • [ ] No trivial smoke tests (it("should create", ...) or similar)
  • [ ] Variable naming: no single-letter or abbreviated names (el, f, res, btn). Use full descriptive names (element, fixtureRef, result, button).
  • [ ] SPDX header: new file → <current year> INFO.nl only; existing file → INFO.nl added only if completely absent from the existing line

Spec structure

  • [ ] describe(ClassName.name, ...) — class name reference, not a string literal
  • [ ] declarations: [Component] used (component is standalone: false), OR imports: [Component] if already standalone
  • [ ] Services should use TestBed.inject() + jest.spyOn() — avoid useValue: mockObject.
    • Reason: type safety. useValue accepts any object — typos, missing methods, wrong return types all silently pass. jest.spyOn is checked against the real service type, so the compiler catches mismatches.
    • Strongly preferred pattern:
      providers: [provideHttpClient(), provideRouter([]), MyService],
      // ...
      myService = TestBed.inject(MyService);
      jest.spyOn(myService, "someMethod").mockReturnValue(of(result));
      
    • useValue is acceptable when genuinely difficult to avoid (e.g. a service with a deeply complex DI tree that cannot be satisfied without significant setup). Flag it with a comment explaining why.
    • Always acceptable exceptions: Angular built-in injection tokens (MAT_DIALOG_DATA, LOCALE_ID, APP_BASE_HREF, etc.) where no real class exists to inject.
    • TranslateService → use TranslateModule.forRoot() in imports, then TestBed.inject(TranslateService) + jest.spyOn.
    • Services using ZacHttpClient → add provideHttpClient() to providers.
    • Services using Router → add provideRouter([]) to providers.
  • [ ] provideHttpClient() present if any service in the tree uses ZacHttpClient
  • [ ] provideRouter([]) present if any service in the tree uses Router

Coverage

  • [ ] Every test asserts meaningful behaviour
  • [ ] ≥90% of template behaviours covered (buttons, conditionals, outputs, form states)
  • [ ] Protected/private members accessed via bracket notation: component["member"]

Step 3 — Fix

For each FAIL: edit the spec file with the correct fix. Do NOT touch any component source files.

After all fixes are applied, re-read the spec to confirm no violations remain.

Step 4 — Report

AUDIT: PASS                         (if nothing needed fixing)
AUDIT: PASS (N issues fixed)        (if fixes were applied)

Issues fixed:
- Line X: <description of fix>
- ...

If a violation cannot be auto-fixed (e.g. missing test coverage that requires understanding domain logic), list it as a manual action required item and do not mark the audit PASS until the user addresses it.

Du fichier au premier essai

Le téléchargement contient exactement le contenu affiché sur cette fiche. Cette copie peut différer de la dernière version du dépôt source.

Consulter la source et ses fichiers annexes

Ce téléchargement contient uniquement SKILL.md. Les scripts, références, modèles et dépendances éventuels ne sont pas inclus. Récupérez les fichiers nécessaires depuis la source en conservant leur arborescence avant de poursuivre.

1. Télécharger le fichier

Télécharger SKILL.md

Depuis la racine d’un projet de test, enregistrez le fichier sous .skill-downloads/angular-spec-auditor-mveraojd/SKILL.md, ou utilisez la commande suivante. Ce dossier sert à examiner la skill avant son installation.

Commande pour macOS/Linux ou WSL : un shell POSIX et curl sont nécessaires. Sous Windows sans WSL, utilisez le bouton de téléchargement et créez le dossier manuellement.

mkdir -p '.skill-downloads/angular-spec-auditor-mveraojd' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/angular-spec-auditor-mveraojd/download' --output '.skill-downloads/angular-spec-auditor-mveraojd/SKILL.md.part' && mv '.skill-downloads/angular-spec-auditor-mveraojd/SKILL.md.part' '.skill-downloads/angular-spec-auditor-mveraojd/SKILL.md'

2. Vérifier les prérequis

Lisez SKILL.md avant de l’utiliser. Si le fichier cite des scripts ou services externes, examinez-les et préparez les accès nécessaires dans votre environnement de test.

Aucune section de prérequis reconnue dans ce fichier. Cela ne signifie pas qu’il est autonome : les bibliothèques, outils et accès peuvent être cités ailleurs dans le contenu ou dans le dépôt source.

Les plateformes de la fiche sont des indications du catalogue. Les chemins ci-dessous suivent la documentation des outils ; ils ne prouvent pas que cette skill y a été exécutée. Aucune version minimale de ces outils n’est attestée pour cette fiche.

3. Charger la skill

Le fichier ne fournit pas un en-tête name/description exploitable pour cette procédure native. Le téléchargement reste disponible pour lecture ; utilisez le mode manuel ci-dessous.

Mode manuel ou autre outil : joignez SKILL.md à une conversation, ou ouvrez-le dans un agent capable de lire les fichiers. Ajoutez les ressources annexes nécessaires. Il n’existe pas de dossier universel reconnu par tous les outils.

4. Faire un premier essai

Utilisez une entrée courte et fictive : un endpoint d’API, un petit document ou un brief d’interface. Dans une nouvelle conversation, joignez le fichier ou donnez son chemin à l’agent, puis adaptez cette demande :

Lis .skill-downloads/angular-spec-auditor-mveraojd/SKILL.md et applique ses instructions à cet exemple : [décrire une entrée de test]. Indique les fichiers, dépendances ou accès qui manquent. Produis le résultat demandé par la skill sans inventer de données ni exécuter de script non examiné.

Résultat attendu : une sortie correspondant aux instructions de la skill, ou une liste précise des prérequis manquants. Une simple confirmation de lecture ne valide pas le premier usage. Si une ressource externe est indisponible, ce parcours reste à tester.

Skills similaires