Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsCommunityBlog
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

Back to skills

Angular Admin

ASecurity

[Development] Fix a Virto Commerce module's Admin SPA (AngularJS) UI that ships inside the module's own vc-module-* repo — blade/widget/service anatomy + idiomatic AngularJS 1.x. Two proof paths, because module repos have NO JS test harness and there is NO Storybook: logic bugs (save/payload, computed value, wrong endpoint) are proven red→green with a throwaway Node scratch harness; layout/CSS/visual bugs (overlap, misalignment, wrong width, clipping) are fixed by mirroring the platform's can...

2 stars
0 votes
0 copies
0 views
Added 9/20/2026
developmentgoc#vueangularnodegitfrontendbackendfullstack

Works with

cli

Security Analysis

A100/100

Scanned 9/20/2026

Install to Claude Code

$npx -y skills add VirtoCommerce/vc-mcp-testing-module --skill angular-admin --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Angular Admin?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Angular Admin
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/virtocommerce-angular-admin-vc-mcp-testing-module/badge)](https://www.skillsdirectory.com/skills/virtocommerce-angular-admin-vc-mcp-testing-module)

More formats (shields.io, HTML) on the badges page.

Download Zip
Files
SKILL.md
---
name: angular-admin
description: "[Development] Fix a Virto Commerce module's Admin SPA (AngularJS) UI that ships inside the module's own vc-module-* repo — blade/widget/service anatomy + idiomatic AngularJS 1.x. Two proof paths, because module repos have NO JS test harness and there is NO Storybook: logic bugs (save/payload, computed value, wrong endpoint) are proven red→green with a throwaway Node scratch harness; layout/CSS/visual bugs (overlap, misalignment, wrong width, clipping) are fixed by mirroring the platform's canonical UI classes (catalog bundled in this skill) and proven in a browser BEFORE the PR via a visual render harness — never inline position/fixed-px. Used by the fullstack-backend developer agent in /qa-fix when the owning layer is the module Admin UI (still single-repo)."
---

# /angular-admin — Fix a module's Admin SPA UI

Fix an Admin-UI bug that lives in a `vc-module-*` repo under `src/VirtoCommerce.<Name>.Web/Scripts/`.
Because the Admin UI ships **inside the module repo**, this is still a **single-repo** fix
(Gate 1 passes) and is owned by `fullstack-backend`.

## Reality check (read this first)

The Scripts area is **hand-written AngularJS 1.x served as static assets** — no bundler, no
`package.json`, no Karma, no spec files, **in any `vc-module-*` repo** (org-wide survey, 2026-06).
There is no in-repo JS test command to run, and you must NOT scaffold one (no `package.json`,
`karma.conf.js`, or spec files committed to the module — that's framework churn, an instant G4 fail).

So Gate 2 (red→green proof) is satisfied by a throwaway harness outside the repo — and **which harness
depends on the bug** (see *Two fix paths* below):
- **Logic** bugs → a **Node scratch harness**: a script in `.fix-workspace/_scratch/VCST-XXXX/`
  (gitignored, never committed, never in the PR diff) that loads the real blade/service file with a stubbed
  `angular` global, drives the buggy seam, and asserts the expected behavior. Red before, green after —
  both runs' output pasted into the PR body. Recipe + verified stub: `scratch-harness-patterns.md`.
- **Layout/CSS** bugs → a **visual render harness** (the Node harness can't render CSS): renders the real
  blade against the real `platform.css` in a browser, red→green screenshots before the PR. See the
  Layout/CSS path below + `visual-render-harness.md`.

Either way the harness is throwaway — only its evidence (output / screenshots) ships, in the PR body.

## When to use
- The `/qa-bug` owning layer is **Layer 2 — Backend Admin (Admin SPA)** AND the responsible code is in
  the routed module's `Web/Scripts/`. (A storefront/`vc-frontend` Vue bug is out of `/qa-fix` backend
  scope — that's the CI frontend agent's lane.)

## Two fix paths — routed by WHERE THE SYMPTOM IS OBSERVED, not by which file you edit

Read the ticket's **Actual result** sentence and ask one question: *is what it describes visible only in
a rendered DOM?*

- **YES — a rendered-DOM symptom** (text or markup wrong / literal / missing / stale, an element absent
  or not updating, overlap, misalignment, wrong width, clipping, spacing, a control in the wrong place)
  → the **browser path** below. A Node process cannot observe a DOM, so it can never be the proof for
  one of these however clean its red→green looks. This holds even when the DIFF is pure JS.
- **NO — a non-rendered symptom** (wrong saved payload, wrong computed value, wrong endpoint or field,
  wrong request) → the **Node scratch harness** path (Steps 1–5 below): `scratch-harness-patterns.md`.
- A bug with both uses both harnesses. **If you cannot decide, it is the browser path.**

> **This routing IS the gate, and it has been got wrong.** VCST-5940 (a preview iframe rendering a
> literal template placeholder) was routed to the Node path because the fix touched a controller. The
> harness proved the controller's assignment timing red→green, review approved at HIGH confidence, CI
> was fully green — and the bug reproduced 3/3 on the deployed artifact. "No JS test harness in the
> repo" is **not** a reason to skip the browser: the render harness needs no repo test infrastructure
> at all (templates and `platform.css` are runtime-loaded static assets).

### Layout/CSS path
1. **Read `admin-spa-ui-conventions.md`** (in this skill) — the platform's canonical class vocabulary +
   per-element snippets + reference blades. There is NO Storybook; that catalog + real blades are the
   style guide.
2. **Mirror a canonical sibling blade** — `Grep` `*.tpl.html` for the element's class (`searchrow`,
   `ui-select`, `table-wrapper`, `vc-checkbox`, …), prefer the same module, else `vc-module-pricing`. Copy
   its structure. **Never** add inline `position:absolute|fixed`, fixed-px `width/height/left/top`, or inline
   `ng-style` height. Note `blade-static` is **fixed-height** — a multi-row toolbar (e.g. a note above the
   searchrow) must reserve height via `__expanded` or move the note into content (conventions §2.1).
   Recipes: `css-layout-patterns.md`.
3. **MEASURE, then prove it before the PR** — the gate is a **numeric geometry assertion**, not a screenshot
   (a screenshot gave a false PASS on VCST-5276). Run the read-only measurement script (conventions §4) in a
   browser: capture the **failing** geometry (`overlapPx > 0`), apply the fix, re-measure, require
   `searchrow.bottom <= gridHeader.top` (`overlapPx === 0`). Then build the **visual render harness**
   (`visual-render-harness.md`) for the red→green picture; `qa-backend-expert` runs both. Iterate dev↔QA ≤2×
   and squash. **Measurement numbers + screenshots** go in the PR body. (Harness can't stub it → escalate to
   the full local-platform fallback; don't skip the proof.)
4. **Gate** (build + Gate 4) as in the logic path below, then hand off with the measurement + screenshots.

## Steps (logic-bug path)
1. **Locate** the blade / widget / controller / service / template under `Web/Scripts/` (`Grep`/`Glob`
   on blade ids, template text, controller names, settings keys). See `angular-patterns.md` for the
   anatomy (module.js registration → blades/ → widgets/ → resources/).
2. **Reproduce (red) in the scratch harness.** Write
   `.fix-workspace/_scratch/VCST-XXXX/repro.cjs` (the `.cjs` extension is required — the workspace
   sits under a `"type": "module"` package.json) following `scratch-harness-patterns.md`: stub
   `angular`, `require` the real file from the checkout, instantiate the controller/factory with
   stubbed collaborators, assert the EXPECTED behavior. `node repro.cjs` must **fail** on current
   code. If it passes, the RCA is wrong → re-investigate.
3. **Fix (green):** smallest correct change to the blade/service/template; idiomatic AngularJS,
   matching the file's existing conventions (controllerAs vs `$scope`, `$q`, DI-array style).
   `node repro.cjs` now exits 0. Capture both outputs for the PR body.
4. **Trivial-skip is now narrow:** a change with **no rendered-DOM symptom** and no assertable logic
   (a one-line null-guard, a typo, an off-by-one) — justify in the PR body. A binding, label, attribute
   or interpolation whose defect is *visible on screen* is a rendered-DOM symptom: it goes the browser
   path above and is proven with the render harness. Never skipped, and never substituted with a
   controller-state assertion.
5. **Gate:** `dotnet build -c Debug -p:NuGetAudit=false` still green (Scripts are content files — the
   C# build embeds them; make sure nothing broke). Hand the diff to `backend-reviewer` (Gate 4) with
   the scratch-harness evidence in the summary.

## Hard rules
- **Single repo** — all changes in the one `vc-module-*` (its `Web/Scripts/` and/or C#). Second repo → STOP.
- **The scratch harness never ships.** Nothing under `_scratch/` is committed; the PR diff contains
  only the fix. No new build steps, no `package.json`, no framework/version changes in the repo.
- **Minimal diff**; never touch secrets/lockfiles/CI config.
- Match the module's existing AngularJS conventions; don't restyle, restructure, or "modernize".
- **Layout/CSS fixes use only platform classes** (`admin-spa-ui-conventions.md`) — never inline
  `position:absolute|fixed`, fixed-px sizing, or `ng-style` height hacks — and are **proven before the PR**
  with the visual render harness (`visual-render-harness.md`), not deferred to post-deploy.
- Same gate ladder and **no-auto-merge** as the C# path — `.claude/rules/quality-gates.md`.

## References
- `admin-spa-ui-conventions.md` — canonical platform UI class catalog (blades, search, filters, dropdowns,
  inputs, buttons, grids, checkboxes, dialogs, lists) + discovery recipe — **read before any layout/CSS fix**
- `css-layout-patterns.md` — before/after layout fix recipes
- `visual-render-harness.md` — pre-PR browser proof for layout/CSS fixes
- `scratch-harness-patterns.md` — verified Node stub for `angular`, worked red→green example (logic bugs)
- `angular-patterns.md` — VC Admin SPA blade/widget/service anatomy
- `knowledge/architecture/vc-module-architecture.md` §2 (Admin UI ships in the module repo)

Attribution

VirtoCommerceVirtoCommerce
View sourceMore from VirtoCommerce →
SSkills DirectorySkills Directory

Your tool, in front of Claude Code builders.

3 founder slots · $299/mo · GSC-verified traffic · sponsors can never buy grades.

See placements

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Your tool, in front of Claude Code builders.

3 founder slots · $299/mo · GSC-verified traffic · sponsors can never buy grades.

See placements

Related Skills

Browser Extension Developer

Use this skill when developing or maintaining browser extension code in the `browser/` directory, including Chrome/Firefox/Edge compatibility, content scripts, background scripts, or i18n updates.

281612 votes

Seo Optimizer

SEO optimization with keyword analysis, readability assessment, technical validation, content quality. Use for search rankings, blog posts, content audits, or encountering keyword density, readability scores, meta tags, schema markup errors.

2132 votes

Google Official Seo Guide

Official Google SEO guide covering search optimization, best practices, Search Console, crawling, indexing, and improving website search visibility based on official Google documentation

1862 votes

Tanstack Start

Build a full-stack TanStack Start app on Cloudflare Workers from scratch — SSR, file-based routing, server functions, D1+Drizzle, better-auth, Tailwind v4+shadcn/ui. Use whenever the user mentions TanStack Start, asks to scaffold a full-stack Cloudflare app with SSR, wants an SSR dashboard, or asks for a React 19 + Cloudflare Workers app with file-based routing and server functions — even if they don't name TanStack Start specifically. No template repo — Claude generates every file fresh per ...

9881 votes

Pentest

PTES-aligned adversarial security audit for backend, frontend, and mobile applications. Produces a CVSS-scored Hacker Report with verified PoCs and phased remediation.

5491 votes
View all in development →