resource-loading-strategy

Rules for loading website resources in three stages: eager for content needed immediately, lazy for later same-site content, and delayed for third-party content. AEM is Adobe Experience Manager, a platform for managing websites.

In plain words
What is it for?
Use them when building or reviewing AEM pages, especially the initial page load, below-the-fold content, and third-party resources.
Why use it?
They set limits and ordering for scripts, styles, images, and other resources so critical page content can load first.

Cursor rule for Cursor

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add rules/adobecom/da-express-milo/resource-loading-strategy
Clone the repo
git clone --depth 1 https://github.com/adobecom/da-express-milo

Made for: Cursor.

Per session 2,619 This file is loaded in full into every session.
When invoked 2,619 The same file — it is already loaded in full.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.02619 $0.02619
Opus 5 $0.01309 $0.01309
Sonnet 5 $0.00524 $0.00524
Haiku 4.5 $0.00262 $0.00262

Measured 2d ago against content hash 766307f580c1, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

resource-loading-strategy scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

Origin

Copies of this mod

1 near-identical copy found in the catalogue:

.cursor/rules/resource-loading-strategy.mdc · 358 lines

How it starts

The opening of the file, as written. The whole thing — 358 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Resource Loading Performance Rules - Three-Phase Strategy

APPLY: EVERY QUERY - CRITICAL PERFORMANCE RULE

AEM Three-Phase Loading (E-L-D) - REQUIRED

Based on AEM's performance guidelines:

Phase E (Eager) - Critical Path to LCP

100KB BANDWIDTH BUDGET - STRICTLY ENFORCED

<!-- ✅ REQUIRED - Critical path optimization in head.html -->
<style>body { display: none; }</style>

<!-- ✅ REQUIRED - Single origin, under 100kb total -->
<script src="/express/code/scripts/scripts.js" type="module"></script>
<script src="/express/code/scripts/fallback.js" nomodule></script>

<!-- ✅ REQUIRED - Viewport meta for responsive design -->
<meta name="viewport" content="width=device-width, initial-scale=1"/>

<!-- ❌ FORBIDDEN - Before LCP (consumes bandwidth budget) -->
<!-- NO early hints, h2-push, preconnect, or font loading -->

Phase L (Lazy) - Same-Origin Enhancement

Project-controlled content that doesn't affect TBT/FID

// ✅ REQUIRED - Lazy loading for Phase L content
const loadPhaseL = () => {
  // Load next sections and their blocks
  loadBelowFoldSections();
  
  // Load remaining images with lazy loading
  const lazyImages = document.querySelectorAll('img[loading="lazy"]');
  lazyImages.forEach(img => observeImage(img));
  
  // Load non-blocking JavaScript libraries
  loadNonCriticalModules();
};

// Start Phase L after LCP is achieved
document.addEventListener('lcp-ready', loadPhaseL);

Phase D (Delayed) - Third-Party Deferred

MANDATORY 3+ second delay after LCP

// ✅ REQUIRED - Phase D delayed loading (3+ seconds)
const loadPhaseD = (DELAY = 3000) => new Promise(resolve => {
  setTimeout(() => {
    // Marketing and analytics (not critical for CWV)
    loadAnalytics();
    loadTagManager();
    loadConsentManagement();
    
    // Interactive features
    loadChatSupport();
    loadSocialMediaEmbeds();
    loadA11yTools();
    
    // Heavy third-party integrations
    loadCommentSystems();
    loadVideoEmbeds();
    
    resolve();
  }, DELAY);
});

Read the full file on GitHub · 358 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 2d ago First seen · 358 lines · 2,619 tokens per session scan A 766307f580c1

Subscribe to this mod's changes

resource-loading-strategy is a cursor rule published in the GitHub repository adobecom/da-express-milo (6 stars, last pushed 2d ago), licensed Apache-2.0. It adds 2,619 tokens to every session, about $0.0131 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.