一键导入
add-slide-deck
Create slide decks — internal Reveal.js, external-embed, or external-link. Use proactively when creating new presentation decks.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Create slide decks — internal Reveal.js, external-embed, or external-link. Use proactively when creating new presentation decks.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | add-slide-deck |
| description | Create slide decks — internal Reveal.js, external-embed, or external-link. Use proactively when creating new presentation decks. |
| disable-model-invocation | false |
| allowed-tools | Read, Write, Edit, Glob, Grep, Bash |
| model | sonnet |
| argument-hint | [title, description, and type] |
| tier | 2 |
| intent | create |
| max-files | 4 |
| max-loc | 800 |
Create multilingual slide decks (currently English + Spanish) for XergioAleX.com using Astro Content Collections. Supports three deck types:
_layouts/.embedUrl for iframe embedding (Google Slides, Speaker Deck, Pitch).externalUrl as a CTA stub info page.The skill auto-detects the deck type based on the $TYPE parameter.
This skill is the mandatory workflow for creating new slide decks in this repository.
/add-slide-deck when creating new files in src/content/slides/./add-slide-deck before writing files.src/content.config.ts)src/content/tags/)/optimize-image skill or pnpm run images:optimize:slides)doc-edit for minor edits)src/pages/)Tier: 2 - Standard
Reasoning: Creating multilingual deck files requires moderate reasoning for frontmatter accuracy, type-specific field selection, and natural translation. Internal decks additionally need slide structure scaffolding from layout primitives.
$TYPE value | Mode | What happens |
|---|---|---|
internal (default) | Internal | Creates Reveal.js Markdown deck with scaffolded slide structure |
external-embed | External embed | Creates deck file with embedUrl for iframe rendering |
external-link | External link | Creates deck file with externalUrl as CTA stub |
$TITLE: Deck title (required)$DESCRIPTION: Deck description, 130-160 characters (required)$TYPE: internal | external-embed | external-link (default: internal)$SLUG: Custom slug (default: kebab-case of title, English only)$LANG: Primary language, en or es (default: en). The other language version will be translated.$PUB_DATE: Publication date in YYYY-MM-DD format (default: today's date)$TAGS: Array of tag names (max 5, must exist in src/content/tags/)$HERO_IMAGE: Hero image path (from public/)$DRAFT: Boolean, marks deck as draft (default: false)$EVENT_NAME: Event where the talk was given (optional)$EVENT_DATE: Event date in YYYY-MM-DD (optional)$EVENT_URL: Event URL (optional)$THEME: dark | light (default: dark)$TRANSITION: none | fade | slide | convex | concave | zoom (default: slide)$SYNTAX_HIGHLIGHT: Boolean, enable code syntax highlighting (default: true)$MATH: Boolean, enable KaTeX math rendering (default: false)$EXTERNAL_URL: Canonical URL to the deck (required for external-embed)$EMBED_URL: Iframe-friendly embed URL (required for external-embed)$ASPECT_RATIO: 16:9 | 4:3 | 1:1 (default: 16:9)$EXTERNAL_URL: URL to the deck (required for external-link)$PROVIDER: Provider hint, e.g. google-slides (optional)Source of truth for all slide deck conventions:
File naming: YYYY-MM-DD_{slug}.md (date prefix stripped from URLs)
Directories: src/content/slides/en/ and src/content/slides/es/
URL surface: /tech-talks/<slug> (EN) and /es/tech-talks/<slug> (ES). The collection is named slides (internal); the URL is /tech-talks/ (user-facing). Do NOT create /slides/ routes.
Images: Stored in public/images/slides/<slug>/. Hero: hero.{ext}.
Slugs: MUST be English-only on both language versions.
Tags: All tags go in a single tags array. The tier (primary/secondary) is determined by the tags collection. Max 5 tags per deck.
Layouts catalog (internal decks): 15 reusable layout primitives in src/content/slides/_layouts/. Use them as copy-paste references when scaffolding slide structure.
Internal deck:
---
title: 'Deck Title'
description: 'A 130-160 char description.'
pubDate: '2026-01-31'
type: internal
theme: dark
transition: slide
syntaxHighlight: true
math: false
heroImage: '/images/slides/slug/hero.webp'
tags: ['tech', 'ai']
draft: false
eventName: 'Conference Name'
eventDate: '2026-01-31'
eventUrl: 'https://conference.example.com'
---
External-embed deck:
---
title: 'Deck Title'
description: 'A 130-160 char description.'
pubDate: '2026-01-31'
type: external-embed
externalUrl: 'https://docs.google.com/presentation/d/...'
embedUrl: 'https://docs.google.com/presentation/d/.../embed'
aspectRatio: '16:9'
heroImage: '/images/slides/slug/hero.webp'
tags: ['tech']
draft: false
---
External-link deck:
---
title: 'Deck Title'
description: 'A 130-160 char description.'
pubDate: '2026-01-31'
type: external-link
externalUrl: 'https://drive.google.com/...'
heroImage: '/images/slides/slug/hero.webp'
tags: ['tech']
draft: false
provider: 'google-slides'
---
$TYPE (default: internal)$TITLE, $DESCRIPTION$TITLE, $DESCRIPTION, $EXTERNAL_URL, $EMBED_URL$TITLE, $DESCRIPTION, $EXTERNAL_URLsrc/content/slides/en/ to avoid slug conflictssrc/content/tags/ — verify all provided tags existpublic/images/slides/# Check existing decks
ls src/content/slides/en/
# Check available tags
ls src/content/tags/
# Verify image assets if referenced
ls public/images/slides/ 2>/dev/null
$SLUG)src/content/slides/en/YYYY-MM-DD_{slug}.md (use $PUB_DATE as date prefix)Create src/content/slides/{$LANG}/YYYY-MM-DD_{slug}.md with the correct frontmatter for the chosen type.
Image setup: If a hero image is provided:
public/images/slides/{slug}//images/slides/{slug}/hero.{ext} in frontmatterhero-es.{ext} in the same folder and use the variant path in the ES frontmatter.For internal decks, scaffold an initial slide structure using layout primitives from src/content/slides/_layouts/:
src/content/slides/_layouts/ for referencetitle-hero — Opening cover slide with title, subtitle, authorsection-divider — One section divider as a structural placeholderclosing-cta — Final slide with CTA and contact channels--- (horizontal separator) on its own linestyle attributes for colors)For external-embed and external-link decks, the body content is a brief description paragraph (no slide Markdown needed).
MANDATORY: Create the translated version in the other language directory.
src/content/slides/es/YYYY-MM-DD_{slug}.mdsrc/content/slides/en/YYYY-MM-DD_{slug}.mdTranslation rules:
title, description, eventName, all body content (slide text)pubDate, updatedDate, type, theme, transition, tags, draft, URLs, code blocksheroImage: Use the same path as EN by default. If a hero-es.{ext} variant exists, use it in the ES frontmatterpequeno (→ pequeño), codigo (→ código), pagina (→ página), etc.pnpm run build
Verify:
pnpm run build passes/add-slide-deck workflow was used for creation (no manual bypass)## Slide Deck Created (Multilingual)
### Files Created
- English: `src/content/slides/en/YYYY-MM-DD_{slug}.md` -> URL: `/tech-talks/{slug}/`
- Spanish: `src/content/slides/es/YYYY-MM-DD_{slug}.md` -> URL: `/es/tech-talks/{slug}/`
### Details
- **Title (EN):** {title}
- **Title (ES):** {title_es}
- **Type:** {internal|external-embed|external-link}
- **Tags:** {tags}
- **Date:** {pubDate}
- **Hero:** {heroImage or "none"}
### Build: Passing
### Commit Message
content: add slide deck "{title}" (en + es)
src/content/slides/en/, src/content/slides/es/, public/images/slides/src/pages/, src/components/, src/layouts/, src/content/slides/_layouts/src/content/tags/, max 5)src/content.config.ts)[TODO: ...], [TBD], or similar in published deckssrc/lib/i18n.ts for active languages./translate-sync skill after creating the primary version.Stop and ask if:
src/content/slides/en/ (English version)src/content/slides/es/ (Spanish version)tenés, podés, sabés, etc.pequeno, codigo, numero)[TODO:, [TBD], [FIXME] — zero in final deck)pnpm run build passesEscalate to a higher tier (or ask user) if:
_layouts/architect first)RevealDeckInput:
$TITLE: Building Resilient Microservices
$DESCRIPTION: Patterns and practices for building fault-tolerant distributed systems with circuit breakers, retries, and graceful degradation.
$TYPE: internal
$TAGS: ['tech', 'devops']
$PUB_DATE: 2026-04-26
$THEME: dark
$EVENT_NAME: DevConf 2026
Creates:
src/content/slides/en/2026-04-26_building-resilient-microservices.md (Reveal.js deck with scaffolded slides)src/content/slides/es/2026-04-26_building-resilient-microservices.md (translated)Input:
$TITLE: Introduction to Kubernetes
$DESCRIPTION: A beginner-friendly walkthrough of Kubernetes concepts, architecture, and first deployment steps.
$TYPE: external-embed
$EXTERNAL_URL: https://docs.google.com/presentation/d/1abc123/edit
$EMBED_URL: https://docs.google.com/presentation/d/1abc123/embed
$TAGS: ['tech', 'devops']
Creates:
src/content/slides/en/2026-04-26_introduction-to-kubernetes.md (embed frontmatter + description)src/content/slides/es/2026-04-26_introduction-to-kubernetes.md (translated)Input:
$TITLE: AI-Driven Development Workflow
$DESCRIPTION: How AI coding assistants are reshaping the software development lifecycle, from ideation to deployment.
$TYPE: external-link
$EXTERNAL_URL: https://drive.google.com/file/d/xyz789
$TAGS: ['tech', 'ai']
$PROVIDER: google-slides
Creates:
src/content/slides/en/2026-04-26_ai-driven-development-workflow.md (stub with CTA)src/content/slides/es/2026-04-26_ai-driven-development-workflow.md (translated)Input:
$TITLE: My Talk
$TYPE: external-embed
Result: Stopped — $DESCRIPTION, $EXTERNAL_URL, and $EMBED_URL are required for external-embed decks.
doc-edit — Edit existing deckstranslate-sync — Synchronize translationsoptimize-image — Optimize hero images for decksi18n-guardian — Translation quality verificationPolicy: Keep only the 3 most recent entries. When adding a new entry, remove the oldest.
| Version | Date | Changes |
|---|---|---|
| 1.0.0 | 2026-04-26 | Initial skill: three deck types (internal, external-embed, external-link), multilingual creation, layout scaffolding for internal decks, full parameter set, validation via pnpm run build. |
Create blog posts — from a topic (writes content) or with provided content (scaffolding). Use proactively when creating new blog posts or articles.
Pre-publication audit for blog posts — comprehensive final review of SEO, AEO, accessibility, images, content quality, i18n parity, and project conventions before publishing. Use proactively before publishing any blog post.
Pre-publication audit for blog series — validates series definition, post ordering, cross-post consistency, navigation, and runs individual post audits for all posts in the series. Use proactively before publishing any blog series.
Audit the blog tag taxonomy — frequency analysis, orphan detection, hierarchy validation, and proposals for new subtopic tags. Read-only — proposes, never modifies tags or posts. Use proactively before each release cycle or after a content drop of 5+ posts.
Optional DeepWorkPlan addon that connects an AI-first repo to the developer's Dailybot team — installing (with consent) the Dailybot agent skill (DailybotHQ/agent-skill) and/or the Dailybot CLI (DailybotHQ/cli), wiring the plan lifecycle into best-effort agent updates - kickoff when a plan starts, significant task completions, a blocked report when an unattended run halts, and a milestone on plan completion - with payloads derived from the plan's state layer, and optionally committing the Dailybot skill's deterministic hook enforcement (dailybot hook lifecycle hooks, CLI >= 1.12.0) so the agent harness itself reminds agents about unreported work. Opt-in, never required, never blocks the work, reconciles existing setups instead of clobbering them, and defers all auth to the Dailybot skill's own consent flow. Use when the developer or team already uses Dailybot and wants DWP progress visible to humans.
Optional DeepWorkPlan addon that safely upgrades a repo's dependencies — reasoning about the repo's ACTUAL package manager (npm/pnpm/yarn + ncu, pip/poetry/uv, cargo, go mod, bundler, composer, and more) rather than assuming npm — with a batched, validated, revertible workflow that detects the manager and manifests/lockfiles, classifies upgrades (patch/minor/major), upgrades in safe batches, runs the repo's real validation gate after each batch, reverts a failing batch, and summarizes. Opt-in, never required, reconciles with the repo's existing tooling. Use when the developer wants to bring dependencies up to date without breaking the build.