agentleFS
mrhinklemrhinkle/VibeCoding-a-Website/.claude/skills/aios-presentation-standard/SKILL.md

aios-presentation-standard

Skill17 starsChanged 7 months agoMITView on GitHub

Create, edit, and audit presentations according to the AIOS Presentation Quality Protocol (PQP). Use this skill whenever the user requests a presentation for MarketingProfs, Peripety Labs, or demands high-stakes professional slides with the "AIOS" or "Agentic" aesthetic. Covers both dark-mode (online presentations) and white-background (AIOS official curriculum) variants. Also use when fixing broken logos, duplicate elements, inconsistent whitespace, footer text, or chart clarity issues in existing AIOS decks.

The file

We split this skill into the rules it gives an agent

5 rules. About 0 are common, 1 is distinctive, and 4 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈1

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 4

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Always start from a template in templates/ rather than writing from scratch.

    line 15
  2. Very specific:

    All three elements MUST be inside .slide-container.

    line 72
  3. Very specific:

    Use CSS horizontal bars (not Chart.js) for maximum reliability.

    line 129
  4. Very specific:

    CRITICAL: Always use scripts/render_slides_to_pdf.py when exporting to PDF.

    line 254
  5. Distinctive:

    After rendering, verify minimum font sizes:

    line 271

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

AIOS Presentation Standard

When to Use Each Variant

VariantUse ForBackgroundFooter
White ModeAIOS official curriculum (e.g., AI for Business Professionals modules, MarketingProfs classroom sessions)#FFFFFFOrange course title, bottom-left
Dark ModeOnline presentations, webinars, keynotes, external talks#0F1115None

Always start from a template in templates/ rather than writing from scratch.


Template Library

White Mode (AIOS Official Curriculum)

FileSlide TypeKey Layout
white_title_slide.htmlTitle/openingCentered hero text, presenter info with orange left-border
white_content_slide.htmlTwo-column comparisonSide-by-side panels, old vs. new paradigm
white_chart_slide.htmlData visualizationCSS horizontal bars with gap callout + insight panel
white_framework_slide.htmlFramework overview5-step horizontal flow with orange letter + connector line
white_action_plan_slide.htmlClosing action3-column card grid with numbered steps and time badges

Dark Mode (Online Presentations)

FileSlide TypeKey Layout
dark_title_slide.htmlTitle/openingFull-bleed dark, gradient h1, meta-grid for speaker info
dark_content_slide.htmlStats/data2×2 stat boxes, highlight box, footnotes
dark_framework_slide.htmlFramework overview5-column grid with arrow connectors, dark cards
dark_action_plan_slide.htmlClosing actionNumbered step cards with orange accent

1. Design System

Color Palettes

TokenDark ModeWhite Mode
Background#0F1115#FFFFFF
Primary Text#FFFFFF#111111
Secondary Text#A5B3CE#555555
Accent#f44800#f44800
Divider#333333#111111 or #E1E4E8
Panel/Card BG#1A1D24#F5F7FA or #FFF5F0

Typography

  • Headings: Inter Tight — weights 600, 800
  • Mono/Labels: JetBrains Mono — weights 400, 700
  • Minimum sizes: 13px footer; 16px descriptions; 20px body; 24px subtitles; 46–80px h1

Slide Dimensions

  • Width: 1280px, min-height: 720px
  • Content slides: padding: 60px 80px 80px
  • Title slides: padding: 80px 100px 80px
  • Never less than 80px bottom — the chrome zone (footer + logo) occupies ~70px

2. Required Chrome (Every Slide)

All three elements MUST be inside .slide-container.

Top-Right: AIOS Icon

.aios-icon-topright {
    position: absolute; top: 40px; right: 40px;
    width: 50px; height: 50px; object-fit: contain;
}

Bottom-Right: AIOS Logo Wordmark

/* White mode: color wordmark */
.aios-logo-bottom {
    position: absolute; bottom: 8px; right: 40px;
    height: 48px; width: auto; object-fit: contain;
}
/* Dark mode: white wordmark lockup */
.aios-lockup { position: absolute; bottom: 20px; right: 80px; display: flex; align-items: center; }
.aios-lockup-icon { height: 36px; width: auto; object-fit: contain; }

Centering math (white mode): footer text center = bottom: ~32px; logo center = 8 + 24 = 32px. ✓

Bottom-Left: Footer Text (white mode, non-title slides only)

.slide-footer {
    position: absolute; bottom: 24px; left: 40px;
    font-family: 'JetBrains Mono', monospace;
    font-size: 13px; color: #f44800;
    font-weight: 600; letter-spacing: 0.3px; white-space: nowrap;
}

Standard footer text: AI FOR BUSINESS PROFESSIONALS | BEYOND THE PROMPT: CREATING REPRODUCIBLE WORKFLOWS


3. Content Delivery Patterns

Both variants use the same content structure — only the visual treatment differs. Match the slide type to the pattern below.

Pattern A — Hook / Problem Statement

White: Large h1 with border-bottom: 2px solid #111111 header divider. Subtitle in JetBrains Mono. Key stat in large orange text. Dark: Same structure. Stat boxes use border: 1px solid #333; background: #1A1D24. Highlight box: border-left: 4px solid #f44800; background: rgba(244,72,0,0.1).

<!-- White example (from white_content_slide.html) -->
<div class="header">
    <h1>Why AI is Different</h1>
    <p class="subtitle">// It's not just another tech upgrade.</p>
</div>
<div class="comparison-container">
    <div class="side old"> ... Previous Tech ... </div>
    <div class="side new"> ... Generative AI ... </div>
</div>

Pattern B — Data / Gap Visualization

Use CSS horizontal bars (not Chart.js) for maximum reliability. See white_chart_slide.html.

<div class="bar-track">
    <div class="bar-fill access"><span class="bar-pct">~100%</span></div>
</div>
<div class="gap-callout">
    <div class="gap-line"></div><div class="gap-label">92% Gap</div><div class="gap-line"></div>
</div>
<div class="bar-track">
    <div class="bar-fill workflow"><span class="bar-pct-outside">&lt;8%</span></div>
</div>

Pattern C — Framework / Process Flow

5-step horizontal layout. Orange letter, bold title, short description. Arrow connectors between steps.

<!-- White example (from white_framework_slide.html) -->
<div class="framework-container">
    <div class="connector"></div>
    <div class="step-box">
        <div class="letter">S</div>
        <div class="step-title">Sort</div>
        <div class="step-desc">Audit your tasks.</div>
    </div>
    <!-- repeat for M, A, R, T -->
</div>

Dark variant: Replace step-box with step-card (dark background), add ::after arrow connector. See dark_framework_slide.html.

Pattern D — Action Plan / Closing

3-column card grid. Numbered steps with time badges. One card highlighted in orange.

<!-- White example (from white_action_plan_slide.html) -->
<div class="plan-grid">
    <div class="plan-card">
        <span class="step-number">01</span>
        <div class="time-badge">1 Hour</div>
        <div class="card-title">Audit</div>
        <div class="card-desc">Identify one repetitive task.</div>
    </div>
    <div class="plan-card highlight"> ... </div>
    <div class="plan-card"> ... </div>
</div>

Pattern E — Stats / Evidence

Large numbers (80–96px) with supporting labels. Use 2×2 grid for 4 stats.

<!-- Dark example (from dark_content_slide.html) -->
<div class="stats-grid">
    <div class="stat-box highlight">
        <div class="stat-number">77<span class="stat-sup">%</span></div>
        <div class="stat-label">Use AI at least weekly</div>
        <div class="stat-desc">But only for one-off tasks</div>
    </div>
    <!-- repeat -->
</div>
<div class="insight-box">
    <p class="insight-text">The gap isn't <strong>access</strong> — it's <strong>workflow</strong>.</p>
</div>

4. Key Differences Between Variants

ElementDark ModeWhite Mode
body bg#0F1115#FFFFFF
h1 color#FFFFFF#111111
Subtitle color#A5B3CE#555555
Header dividerborder-bottom: 2px solid #333border-bottom: 2px solid #111111
Card background#1A1D24#F5F7FA
Card border1px solid #3331px solid #E1E4E8
LogoWhite wordmark (.aios-lockup)Color wordmark (.aios-logo-bottom)
Footer textNoneOrange JetBrains Mono, bottom-left
Subtitle prefix> (terminal prompt)// (code comment)

5. Common Editor Artifacts to Strip

The slide editor injects these — always remove when editing HTML directly:

  • <ms-img style="..."><img ...></ms-img> → replace with clean <img class="aios-logo-bottom">
  • style="transform: translate(...)" on .slide-footer or logo → remove the style attribute
  • Logo <img> placed after closing </div> of .slide-container → move inside

6. Narrative Structure (45-Min Deck)

SectionSlidesMinutesPattern Used
Hook1–48 minTitle → Comparison (A) → Stats (E) → Chart (B)
System Thinking5–910 minComparison (A) → Stats (E)
S.M.A.R.T. Framework10–1512 minFramework (C) × 5 steps
Live Demo168 minFull-bleed demo slide
Landscape + Maturity17–185 minStats (E)
Close + Action19–237 minAction Plan (D) → Q&A → Resources

7. Quality Checklist

  • Logo inside .slide-container, not outside
  • padding-bottom: 80px minimum on .slide-container
  • Non-title slides: footer text present, no inline transforms
  • Logo: height: 48px, bottom: 8px, right: 40px (white); height: 36px, bottom: 20px, right: 80px (dark)
  • No <ms-img> wrappers remaining
  • No broken image src paths
  • Charts: CSS bars preferred; Chart.js canvas wrapped in <div style="height: 300px;">
  • Footer spelling: "PROFESSIONALS" not "PROFESSIONAS"; "REPRODUCIBLE" not "REPRODUCTIBLE"
  • Title slide: no footer text; logo present
  • PDF export: minimum 20pt readable text in output (verify with font audit script)

8. PDF Export Standard

CRITICAL: Always use scripts/render_slides_to_pdf.py when exporting to PDF. Do NOT use the default Chromium headless settings — they scale fonts down by 0.75x.

Root Cause

Chromium renders at 96dpi but prints at 72dpi, applying a 0.75x scale to all fonts. A 20px CSS font becomes 15pt in the PDF without the fix.

The Fix

The render script uses two compensating flags:

  1. --force-device-scale-factor=1.333 (= 96/72) — counteracts the dpi conversion
  2. @page { size: 1280pt 720pt; margin: 0; } — forces exact slide dimensions with no margins

Usage

# Edit SLIDE_DIR, OUTPUT_PDF, and SLIDE_IDS at the top of the script, then:
python3 scripts/render_slides_to_pdf.py

Verification

After rendering, verify minimum font sizes:

from pypdf import PdfReader
import re
r = PdfReader('output.pdf')
for i, page in enumerate(r.pages):
    content = page.get_contents()
    data = content.get_data().decode('latin-1', errors='replace')
    sizes = [float(s) for s in re.findall(r'(\d+(?:\.\d+)?)\s+Tf', data)]
    # Filter out SVG logo artifacts (always appear as ~4.27pt scaled 3x)
    readable = [s for s in sizes if s > 10]
    if readable:
        print(f'Page {i+1}: min readable = {min(readable):.1f}pt')

Expected minimum: 20pt for body text (= 20px CSS at 1:1 scale).

Upload to Google Drive

import configparser, json, requests
cfg = configparser.ConfigParser()
cfg.read('/home/ubuntu/.gdrive-rclone.ini')
token = json.loads(cfg['manus_google_drive']['token'])['access_token']
with open('output.pdf', 'rb') as f:
    data = f.read()
resp = requests.patch(
    f'https://www.googleapis.com/upload/drive/v3/files/{FILE_ID}?uploadType=media',
    headers={'Authorization': f'Bearer {token}', 'Content-Type': 'application/pdf'},
    data=data
)
print(resp.status_code, resp.json())

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.