What problem does it solve? Pages that mix a stable layout with live data force a choice between fully dynamic rendering (slow first byte) and full response caching (stale data). This Skill configures Partial Prerendering in the Rango router so the rendered HTML shell is cached and served immediately while designated holes stream fresh content on every request. ## Core Features & Use Cases - One-option opt-in: Add the ppr path option to a page route; the router handles shell capture, storage, and serving with no middleware to mount. - Two hole mechanisms: Use loader() plus loading() for guaranteed-fresh structural holes, or pass un-awaited promises under <Suspense> for physics-based holes with no loader at all. - Middleware-safe commit point: The shell commit happens after the entire middleware chain, so auth guards and redirects always run before any cached byte is served. - Observability and testing: Verify behavior with the x-rango-shell: HIT | MISS header, x-rango-ppr-replay on partial navigations, and helpers like assertShellStatus from @rangojs/router/testing. - Use Case: A product page whose header and layout rarely change but whose price must be live: declare ppr: { ttl: 600, swr: 120 } on the route, register a LivePriceLoader with a loading() fallback, and every visitor gets the cached shell instantly while the price streams in fresh. ## Quick Start Ask the AI to add the ppr path option to a page route in the Rango urls() tree and configure a cache store such as CFCacheStore so the route serves a cached shell with live holes.