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
  • Authors
  • 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.

ProTermsPrivacyRefunds
Back to skills

Umbrella Dotnet Configure Dynamic Image

ASecurity

Configure, repair, or audit Umbrella Dynamic Image in ASP.NET Core, Blazor, or Razor applications. Use for analyzer and generator installation, server-only catalogs, external Razor source roots, URL fingerprinting, URL/version-token propagation, middleware mappings, cache policies, generated-variant validation, UWDI001-UWDI005 diagnostics, or end-to-end image and browser-cache verification.

8 stars
0 votes
0 copies
0 views
Added 9/22/2026
toolsrustexpressgitapi

Works with

terminalcliapi

Security Analysis

A100/100

Scanned 9/22/2026

Install to Claude Code

$npx -y skills add umbrella-libraries/Umbrella --skill umbrella-dotnet-configure-dynamic-image --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Umbrella Dotnet Configure Dynamic Image?

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

Security grade badge for Umbrella Dotnet Configure Dynamic Image
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/umbrella-libraries-umbrella-dotnet-configure-dynamic-image/badge)](https://www.skillsdirectory.com/skills/umbrella-libraries-umbrella-dotnet-configure-dynamic-image)

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

Download with Pro
Files
SKILL.md
---
name: umbrella-dotnet-configure-dynamic-image
description: 'Configure, repair, or audit Umbrella Dynamic Image in ASP.NET Core, Blazor, or Razor applications. Use for analyzer and generator installation, server-only catalogs, external Razor source roots, URL fingerprinting, URL/version-token propagation, middleware mappings, cache policies, generated-variant validation, UWDI001-UWDI005 diagnostics, or end-to-end image and browser-cache verification.'
---

# Configure Dynamic Image

## Purpose

Configure and verify Dynamic Image as one cross-project contract: source discovery, generated catalogs, runtime validation, URL fingerprinting, and HTTP caching must agree.

Before acting, read:

- `.ai-shared\bundles\umbrella\analyzer-compatibility.md`
- `.agents\skills\umbrella-dotnet-configure-dynamic-image\references\dynamic-image-contract.md`

## Workflow

### 1. Discover the application topology

Identify:

- the executable Server project and every Client, Shared, model-factory, or MVC project containing Dynamic Image source;
- all `UmbrellaDynamicImage`, `UmbrellaFileImagePreviewUpload`, `dynamic-image`, `UmbrellaDynamicImageSource`, and `dynamic-source` usages, and for nested sources the element each is declared inside;
- all `FocalPointX`/`FocalPointY` and `focal-point-x`/`focal-point-y` bindings;
- every `EnableFocalPointSelection` usage and whether its value is a literal;
- the service registration and `UseUmbrellaDynamicImage` middleware call;
- every file-provider mapping and its data sensitivity;
- existing analyzer/generator package references and central package-version policy;
- existing `*Url`/`*VersionToken` properties and `GetVersionedWebFilePathAsync` calls.

Do not infer catalog completeness from a clean build. Compare every active Razor usage with generated variants.

### 2. Establish build-time ownership

- Install `Umbrella.WebUtilities.DynamicImage.Analyzers` directly, with `PrivateAssets="all"`, in every project containing checked models, assignments, or Razor.
- Install `Umbrella.Generators.DynamicImage` only in the Server project, with `PrivateAssets="all"`.
- Set `UmbrellaDynamicImageEnableUrlFingerprinting` explicitly in participating projects when fingerprinting is enabled across compilations.
- Give the Server local Razor a non-empty catalog name and configure named external source roots for Client or MVC Razor.
- Ensure one physical Razor file has exactly one catalog owner. Keep catalog names case-insensitively unique.
- Never add the generator to a browser Client merely to discover Client Razor; use a Server external source root.

### 3. Configure runtime behavior

- Assign `EnableUrlFingerprinting` as a literal `true` or `false` in the real registration callback.
- Register the generated named catalogs, or the aggregate catalog, before enabling validation.
- Configure each file mapping independently. Use `Public` only for CDN-shareable content, `Private` for user-specific browser-cacheable content, and `NoStore` for temporary or sensitive files.
- Use long max-age values only with URL fingerprinting. Keep unversioned/stale redirects non-cacheable.
- Keep validation enabled unless the application has an explicit reason not to constrain transforms.
- Place `UseUmbrellaDynamicImage` where requests reach it before terminal endpoint/fallback handling.
- Supply focal coordinates as a pair of normalized values from 0 through 1 and only with `Crop`, which crops from the image center when no focal point is supplied; invalid UI combinations fail before a Dynamic Image URL is rendered.
- ASP.NET Core validation requires image-bound approval for explicit coordinate pairs. Resolve `DynamicImageDescriptor` with `IDynamicImageDescriptorFactory` from trusted server metadata and bind `Image`, or propagate `FocalPointApproval`. Ordinary images and implicit center crops need no keys. Persist signing keys in server secrets, share them across instances, and never expose an unrestricted signing endpoint.
- Enable interactive preview selection only with a literal `EnableFocalPointSelection="true"`. The picker renders the complete image with `ScaleDown`, reports pointer or keyboard changes atomically, and clears to a null coordinate pair.

### 4. Preserve the URL/token contract

- Add nullable matching `*VersionToken` properties for Dynamic Image model URLs.
- Obtain the pair through `GetVersionedWebFilePathAsync`; do not manufacture tokens independently.
- Assign URL and token together in object initialization, mapping, post-save enrichment, and client-side copying.
- Treat a missing stored source as a recoverable state on administrative manage surfaces: keep the admin URL/token pair nullable, allow the form to load with both values null, and let the administrator upload a replacement. User-facing surfaces may remain strict when that is the application's explicit policy.
- On update, tolerate an unresolved pre-existing image when no replacement was requested. When a replacement was requested, fail if the newly promoted file still cannot be resolved; create operations remain strict.
- Use asynchronous Mapperly interfaces when enrichment performs file-provider I/O.
- Resolve collection items concurrently when lookups are independent and the collection is bounded; preserve result ordering.
- Pass the token to model-bound `UmbrellaDynamicImage` and `UmbrellaFileImagePreviewUpload` usages.
- Keep variant-shaping Razor inputs literal. Enum members are valid when type-qualified or when an effective simple or fully qualified `@using static` imports the matching enum type; constants, model expressions, and mixed strings are not catalog-discoverable.
- Focal coordinates are runtime inputs, may be model expressions, and do not participate in generated variant identity or UWDI004.
- `EnableFocalPointSelection` is variant-shaping. A literal `true` adds `ScaleDown` selector variants alongside the preview's configured crop variants; a runtime binding reports UWDI004.

### 5. Validate the complete contract

Build all participating projects with analyzers enabled, then:

1. Confirm UWDI001-UWDI005 are absent for legitimate code; add a regression before changing an analyzer for a suspected defect.
2. Inspect the generated named and aggregate catalog source and reconcile it with every active Razor usage.
3. Confirm generated catalog types exist in the Server assembly and do not ship in browser boot assets.
4. Request canonical fingerprinted fallback, WebP, and configured AVIF URLs; when focal cropping is used, confirm every URL preserves the same `fpx`/`fpy` pair and returns its explicit format without `Vary: Accept`.
5. For an interactive image preview, confirm the selector uses uncropped `ScaleDown` URLs and the adjacent canvas updates without focal-crop HTTP requests. Clearing emits a null pair. Save returns a fresh descriptor; catalogs retain the configured crop and selector variants.
6. Confirm changed dimensions, resize modes, and unregistered explicit formats return `404`.
7. Confirm ordinary missing/stale fingerprints redirect with `Cache-Control: no-store`; invalid or stale signed focal requests return `404` before cache/conditional responses. Check UWDI006 for missing approval propagation in authored Razor.
8. Confirm mapping-specific cache headers, ETag/Last-Modified validators, and explicit conditional `304` responses.
9. Change a disposable source file and verify its token and canonical URL change before removing the probe.

Temporary probes and assets must remain uncommitted and be removed before the final build.

## Completion

Report package placement, catalog ownership, mapping cache policies, generated-catalog reconciliation, analyzer results, and HTTP/browser evidence. If the request was audit-only, make no changes.

Attribution

umbrella-librariesumbrella-libraries
View sourceMore from umbrella-libraries →
SSkills DirectorySkills Directory

Know which skills are safe — weekly.

Best new skills + every skill we flagged as malicious. From the team that scanned 103,619.

Join free

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

Know which skills are safe — weekly.

Best new skills + every skill we flagged as malicious. From the team that scanned 103,619.

Join free

Related Skills

ucoz-landing-skill

Playbook for creating and editing uCoz landing pages via MCP tools (`templates_tool`, `ftp_tool`, `modules_tool`). Use for tasks such as: "build a landing page", "update the homepage as a landing page", "create a promo page on the homepage", "add a lead form / menu / SEO to the homepage". Homepage: `page_list`, `page_get`; first publish — `page_update` with full `page_tmpl`; HTML edits after generation — `patch_template` (module_id=2, template_id=1), not `update_template`. Activate the mail f...

107 votes

Paperclip

Interact with the Paperclip control plane API for task coordination and governance. Use when checking assignments, updating issue status, posting comments, delegating work, managing routines, or calling Paperclip API endpoints.

805541 votes

Instantly Rdsthomas Mission Control

Instantly.ai cold email outreach API - manage campaigns, leads, accounts, and analytics. Use for cold email automation, lead management, campaign creation/monitoring, and email account warmup.

761 votes

Daw Music

Digital Audio Workstation usage, music composition, interactive music systems, and game audio implementation for immersive soundscapes.

761 votes

Caveman Compress

Compress natural language memory files (CLAUDE.md, todos, preferences) into caveman format to save input tokens. Preserves all technical substance, code, URLs, and structure. Compressed version overwrites the original file. Human-readable backup saved as FILE.original.md. Trigger: /caveman-compress FILEPATH or "compress memory file"

1066600 votes
View all in tools →