frontend-slides

frontend-slides is a skill for Claude Code, Codex from pekral/cursor-rules. It costs 38 tokens per session (1,930 once invoked), scanned A, original, MIT.

A guide for building presentation slide decks as one self-contained HTML file using standard browser technologies. The deck includes slide navigation, fits each slide to one screen, and can be printed to PDF from a browser.

In plain words
What is it for?
Use it to create or improve talks, workshops, internal presentations, or pitch decks that need keyboard navigation and browser-based PDF export.
Why use it?
It gives you a presentation that can run locally without a build step or framework. The layout, accessibility, and reduced-motion requirements help prevent slides from being difficult to view or use.

Skill for Claude CodeCodex

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 skills/pekral/cursor-rules/frontend-slides
Any agent
npx skills add pekral/cursor-rules --skill frontend-slides
Clone the repo
git clone --depth 1 https://github.com/pekral/cursor-rules

Made for: Claude Code, Codex.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for frontend-slides

README.md
[![agentmods](https://agentmods.dev/badge/skills/pekral/cursor-rules/frontend-slides.svg)](https://agentmods.dev/skills/pekral/cursor-rules/frontend-slides)
Your own site
<a href="https://agentmods.dev/skills/pekral/cursor-rules/frontend-slides"><img src="https://agentmods.dev/badge/skills/pekral/cursor-rules/frontend-slides.svg" alt="Measured on agentmods" height="20"></a>
Per session 38 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,930 The whole file, excluding the scripts and references it only reads on demand.
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.00038 $0.01930
Opus 5 $0.00019 $0.00965
Sonnet 5 $0.00008 $0.00386
Haiku 4.5 $0.00004 $0.00193

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

Security

Grade A, and why

frontend-slides 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 4d 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.

skills/frontend-slides/SKILL.md · 176 lines

How it starts

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

Constraints

  • Self-contained: one HTML file with inline CSS and JS. No build step, no framework, no external tooling.
  • Vanilla HTML/CSS/JS only — no React, no bundler, no Node scripts, no Python.
  • Body limits: this skill stays well under 500 lines and 5000 tokens; the deck you produce has no hard size limit but every slide must fit one viewport.
  • Viewport fit is a hard gate: every slide fits one viewport with no internal scrolling.
  • Accessibility is required: semantic headings, readable contrast, prefers-reduced-motion support.

Use when

  • Building a talk deck, pitch deck, workshop deck, or internal presentation.
  • Improving an existing HTML deck's layout, motion, or typography.
  • You need a deck that runs from a local file and exports to PDF without installing anything.

Deck structure

One HTML file. One <section class="slide"> per slide inside a <main>. Theme values live in CSS custom properties so they are trivial to change.

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Deck</title>
<style>
:root {
  --bg: #0f172a; --fg: #f8fafc; --accent: #38bdf8;
  --font: system-ui, sans-serif;
}
* { box-sizing: border-box; margin: 0; }
html, body { height: 100%; background: var(--bg); color: var(--fg); font-family: var(--font); }

/* One slide = one viewport. Active slide shown, others hidden. */
.slide {
  position: fixed; inset: 0;
  height: 100vh; height: 100dvh;
  overflow: hidden;
  display: none; flex-direction: column;
  justify-content: center; align-items: flex-start;
  padding: clamp(2rem, 6vw, 6rem);
  gap: clamp(0.75rem, 2vh, 2rem);
}
.slide[aria-current="true"] { display: flex; }

/* Type and spacing scale with the viewport so nothing overflows. */
.slide h1 { font-size: clamp(2rem, 6vw, 5rem); line-height: 1.05; }
.slide h2 { font-size: clamp(1.5rem, 4vw, 3rem); }
.slide p, .slide li { font-size: clamp(1rem, 2.2vw, 1.6rem); line-height: 1.4; max-width: 60ch; }
.slide ul { padding-left: 1.2em; display: grid; gap: clamp(0.4rem, 1.2vh, 1rem); }

.accent { color: var(--accent); }

.progress {
  position: fixed; bottom: 0; left: 0; height: 4px;
  background: var(--accent); transition: width .3s ease;
}

/* Enter animation, disabled for reduced motion. */
.slide[aria-current="true"] > * { animation: rise .5s ease both; }
@keyframes rise { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) {
  .slide[aria-current="true"] > *, .progress { animation: none; transition: none; }
}
</style>
</head>
<body>
<main>
  <section class="slide" aria-current="true">
    <h1>Deck <span class="accent">Title</span></h1>
    <p>Subtitle or tagline.</p>
  </section>
  <section class="slide">
    <h2>Key points</h2>
    <ul><li>First point</li><li>Second point</li><li>Third point</li></ul>
  </section>
</main>
<div class="progress" id="progress"></div>
<script>
const slides = [...document.querySelectorAll('.slide')];
let current = slides.findIndex(s => s.getAttribute('aria-current') === 'true');
if (current < 0) current = 0;

function show(i) {
  current = Math.max(0, Math.min(slides.length - 1, i));
  slides.forEach((s, n) => s.setAttribute('aria-current', String(n === current)));
  document.getElementById('progress').style.width =
    ((current + 1) / slides.length * 100) + '%';
  location.hash = '#' + (current + 1);
}

document.addEventListener('keydown', e => {
  if (['ArrowRight', 'ArrowDown', 'PageDown', ' '].includes(e.key)) { e.preventDefault(); show(current + 1); }
  if (['ArrowLeft', 'ArrowUp', 'PageUp'].includes(e.key)) { e.preventDefault(); show(current - 1); }
  if (e.key === 'Home') show(0);
  if (e.key === 'End') show(slides.length - 1);
});

const fromHash = parseInt(location.hash.slice(1), 10);
show(Number.isFinite(fromHash) ? fromHash - 1 : current);
</script>
</body>
</html>

Read the full file on GitHub · 176 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. 4d ago First seen · 176 lines · 38 tokens per session scan A 3c0b4de8de33

Subscribe to this mod's changes

frontend-slides is a skill published in the GitHub repository pekral/cursor-rules (6 stars, last pushed 4d ago), licensed MIT. It adds 38 tokens to every session and 1,930 once invoked, about $0.0002 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.

Related

Other skills, from other repositories

render-chatgpt-chat

Assemble a ChatGPT chat-reveal video ad from a thread + timeline JSON — one continuous Playwright recording of a ChatGPT mobile chat (user types with the iOS keyboard up → taps send → keyboard slides down + header cluster swaps in one beat → one gray loading dot → the assistant answer streams in word-by-word)…

gooseworks-ai/goose-skills · 148 tokens

render-glassy-matte-grwm

Assemble a multi-scene GRWM beauty-demo ad from a config — a locked-identity creator applies 5 products step by step while a SEPARATE ElevenLabs voiceover narrates and every scene cut is snapped to the VO's product-name word-starts (Whisper word-level timestamps), then 5 Playwright product overlay cards (real…

gooseworks-ai/goose-skills · 233 tokens

awesome-style-mimic

Learns a website's writing style by deep-crawling it in a live browser and distills a reusable style guide (voice, tone rules, lexicon, rhythm, structure, golden samples), then rewrites any documents or page sources in that voice with a cross-document consistency pass. Use when the user says 'learn the style of '…

khasky/awesome-agent-skills · 211 tokens

dws-viewer-api

Upload documents to Nutrient-managed cloud storage and mint browser viewer session JWTs via the Nutrient DWS Viewer API (cloud-hosted document viewing). Use when the user wants to embed a document viewer backed by the cloud, mint a viewer session token, add annotation/forms/signing or real-time collaboration without…

PSPDFKit-labs/nutrient-skills · 166 tokens

nutrient-web-sdk

Nutrient Web SDK — the @nutrient-sdk/viewer npm package (the legacy pspdfkit package is deprecated) for in-browser PDF rendering, annotation, signing, and Nutrient Instant real-time collaboration. PSPDFKit rebranded to Nutrient; the npm package is now @nutrient-sdk/viewer and the runtime entry point is…

PSPDFKit-labs/nutrient-skills · 130 tokens

nutrient-document-authoring

Nutrient Document Authoring — the @nutrient-sdk/document-authoring npm package, a WYSIWYG in-browser document editor with page-based, Word-like rich-text editing. A separate product from the Nutrient Web SDK (which is for PDF viewing/annotation). PSPDFKit rebranded to Nutrient; doc URLs moved to nutrient.io, so…

PSPDFKit-labs/nutrient-skills · 98 tokens