AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Carousel

skill-littlpinguin-marketing-cockpit-template-carousel · by Littlpinguin

Génère un carrousel LinkedIn pour {{COMPANY_NAME}} — PDF document multipage 1080×1350 portrait, qualité graphiste expert, brand-strict. Codifie l'échelle typographique, l'échelle d'espacement, le pipeline d'export Playwright avec rastérisation des gradients, et tous les anti-patterns appris en production. À utiliser dès que l'utilisateur demande « carrousel LinkedIn », « slides LinkedIn », « post…

No reviews yet
0 installs
37 views
0.0% view→install

Install

$ agentstack add skill-littlpinguin-marketing-cockpit-template-carousel

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-littlpinguin-marketing-cockpit-template-carousel)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
2mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Carousel? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

carousel — carrousels LinkedIn brand-strict {{COMPANY_NAME}}

Tu construis des carrousels LinkedIn sous forme de PDFs multipages 1080×1350 portrait. Résultat attendu : niveau graphiste expert, pas un gabarit générique. Cette skill codifie tout ce qui a été appris en production pour qu'aucune règle ne soit redécouverte.

Étape 0 — Doctrine de marque (OBLIGATOIRE)

Avant le moindre plan de slides :

  1. Charger 01-brand/checklist-pre-composition.md — règles de voix, anti-style-IA, typographie carrousels (pas de point final sur les titres, plancher 22px), assets, réutilisation.
  2. Charger 01-brand/voice.md + 01-brand/style-guide.md — voix, vocabulaire, tokens visuels.
  3. Consulter 01-brand/assets/index.md et lister les assets pertinents AVANT d'improviser un visuel. Un asset existant se réutilise, il ne se régénère pas. Ne jamais se fier au nom brut d'un fichier : se fier à sa fiche dans l'index.
  4. Consulter _templates/inventory.md + les carrousels passés de 06-graphic-design/outputs/ : repartir du plus récent validé, pas de zéro.
  5. Charger 01-brand/design-anti-generique.md — doctrine design anti-générique : marqueurs du look IA interdits par défaut (emojis-icônes, excès d'animation, faible densité), checklist de pré-livraison.

Ne jamais produire sans. La copy des slides (hook, titres, légendes, finale) passe le filtre anti-style-IA intégral : aucun parallélisme négatif (« pas X, mais Y »), aucun mot IA mort, pas de tiret cadratin, pas de hype. Court, spécifique, une vraie position.

Quand l'utiliser

  • L'utilisateur demande un carrousel LinkedIn / des slides LinkedIn / un post carrousel
  • Tu illustres un post LinkedIn long-format avec un PDF document attaché
  • Livrable final = PDF prêt à uploader (LinkedIn → « Add a document »)

Présentation projetée en réunion (1920×1080, navigation interactive HTML) → slides. Visuel isolé (image carrée, hero web) → image-generation.

Workflow obligatoire

  1. Brief court : audience LinkedIn, message-clé, copy du post (fournie par l'utilisateur), nombre de slides (8-10 typique).
  2. Plan de slides : 1 hook + 1 plot twist + actes/preuves + manifeste + CTA. Une ligne par slide.
  3. Brief visuel écrit, validé AVANT construction. Pour chaque slide : layout, texte, quel bloc porte le gradient (si la marque en a un), et :
  • 3a. Passe catalogue — parcourir 01-brand/assets/index.md et assigner un visuel porteur de sens à chaque slide (scène, icône, emblème, portrait), avec chemin exact + placement (coin alterné gauche/droite). Si une slide reste sans visuel, le justifier (data brute, manifeste typographique). Une slide « toute en texte » par défaut est un défaut, pas un choix.
  • 3b. Rythme (anti-monotonie) — planifier la cadence : une pause visuelle (gros chiffre ou mot-clé sur fond contrasté, bascule de fond) toutes les 2-3 slides ; varier intensité et compositions. Jamais 8 slides au même gabarit.
  1. Construction : HTML standalone dans 06-graphic-design/outputs/carrousel--/index.html, à partir de 06-graphic-design/templates/carousel-base.html (s'il n'existe pas encore, le créer depuis le carrousel validé le plus récent et le référencer dans _templates/inventory.md). Tokens CSS en tête (palette, typo, espacement, fonts locales).
  2. Export PDF : python3 06-graphic-design/scripts/export-carousel-pdf.py (Playwright headless 1080×1350, rastérisation des gradients — voir plus bas). Créer le script à la première utilisation s'il manque.
  3. Vérification visuelle : lire le PDF page par page (outil Read). Vérifier contre la checklist anti-patterns. Itérer.
  4. Brand-check + calendrier : brand-check sur la copy du post + du carrousel ; mettre à jour le statut dans 02-strategy/calendar/calendar.md (et {{EDITORIALCALENDARTOOL}} si configuré).

Format LinkedIn

  • Dimensions : 1080×1350 px (4:5 portrait) — l'optimum du feed mobile LinkedIn (~80% du trafic).
  • Livraison : PDF document multipage, max 100 MB, max 20 pages (limites LinkedIn).
  • Rendu mobile : min lisible 22px source (≈ 8pt physique). Toute taille en dessous → corriger.

Échelle typographique STRICTE — non négociable

À déclarer en tête du ` (tokens + commentaire). **Aucune taille hors échelle.** Toujours déclarer font-size` explicitement à chaque niveau hiérarchique (les héritages silencieux ont déjà produit des labels à 16px).

| Rôle | Taille | Line-height | Letter-spacing | Usage | |---|---|---|---|---| | .h-xxl | 168px | 0.92 | -0.025em | Hook cover (1 slide max par deck) | | .h-xl | 124px | 0.94 | -0.022em | Titres d'impact, plot twists | | .h-l | 88px | 0.98 | -0.018em | Titres standard | | .h-m | 64px | 1.02 | -0.012em | Sous-titres | | .h-sub | 56px | 1.06 | -0.010em | Valeurs, headers tertiaires | | .num | ~300px | 0.90 | -0.03em | Chiffre héros (1 par slide data) | | .lede | 36px | 1.36 | 0 | Premier paragraphe | | .body-l | 30px | 1.42 | 0 | Texte principal | | .body-m | 28px | 1.42 | 0 | Texte secondaire | | .caption | 24px | 1.35 | 0 | Légendes, labels | | .eyebrow | 24px | 1.20 | 0.10em CAPS | Meta uppercase (parcimonieux — souvent à retirer) | | .footer | 22px | — | 0.01em | Baseline footer |

Seuil absolu : 22px.

Échelle d'espacement STRICTE

:root {
  --sp-3xs:   8px;  /* micro (label ↔ valeur) */
  --sp-2xs:  16px;  /* très petit (gap boutons) */
  --sp-xs:   24px;  /* petit (lignes connexes) */
  --sp-sm:   32px;  /* normal (eyebrow → titre) */
  --sp-md:   48px;  /* confortable (blocs voisins) */
  --sp-lg:   64px;  /* généreux (titre → contenu) */
  --sp-xl:   80px;  /* section (contenu → caption) */
  --sp-2xl: 100px;  /* hero (gaps verticaux des slides centrées) */
}

Seuil minimum : --sp-md (48px) pour tout gap entre deux blocs sémantiquement distincts. Aucune valeur hardcodée hors barème.

Palette et typographie de marque

Tokens dérivés de 01-brand/style-guide.md — jamais de hex en dur hors des tokens :

  • Couleurs : {{BRAND_COLOR_PRIMARY}} / {{BRAND_COLOR_ACCENT}} / {{BRAND_COLOR_DARK}} / {{BRAND_COLOR_LIGHT}} ; gradient signature : {{BRAND_GRADIENT}}.
  • Police : {{BRAND_FONT_PRIMARY}}, chargée en local (@font-face sur les woff2 de 01-brand/assets/fonts/) — jamais de CDN Google Fonts dans un livrable (Chrome headless capture avant le chargement de la webfont → texte en Helvetica).
  • Border-radius : {{BRANDBORDERRADIUS}}.
  • Interdits visuels : {{BRANDBANNEDVISUALS}}, tropes « IA » (dégradé violet→néon, cerveau-circuit, robot), glassmorphism, photos stock.

Le logo : règle absolue

On n'écrit jamais le nom de la marque au clavier dans un visuel quand un logo existe. On insère toujours le vrai logo (SVG inline, ids dédupliqués) depuis 01-brand/assets/. Vaut pour les titres et la signature de slide.

Export PDF — règles critiques (apprises en production)

Chromium rend mal certaines constructions CSS dans son pipeline PDF. Ces règles sont non négociables :

  1. Texte en gradient (background-clip: text) : rendu en rectangle plein ou avec artefacts en PDF. Contournement câblé dans export-carousel-pdf.py : chaque élément à gradient est rastérisé par screenshot Playwright (DPR×2) puis remplacé par un ` aux dimensions exactes avant page.pdf()`.

Conséquence design : le gradient ne s'applique qu'à des blocs autonomes occupant leurs propres lignes (un titre entier, une ligne dédiée, un .num). Jamais un `` gradient au milieu d'une phrase qui peut wrapper — la rastérisation casserait le flux inline. Un mot-clé en gradient = sa propre ligne de titre (c'est aussi un meilleur design).

  1. box-shadow flou interdit : Chromium le rend en rectangle gris plein à l'export. Pour détacher une carte claire du fond : border: 1px solid rgba(0,0,0,.12) fin.
  2. Halo/glow en élément séparé interdit (div alpha + border-radius) : rastérisé en bande grise rectangulaire. Cuire l'ambiance dans le background de la slide (radial-gradients alpha très faibles ~.05, sous un éventuel grain qui les dither).
  3. Élément DOM à fond gradient (bouton CTA pill, badge, cadre) : rasterisé avec bords crénelés au zoom. Le rendre en SVG vecteur (gradient en `` + texte vecteur).
  4. SVG à fill="url(#pattern)" ou image embarquée : rendu tronqué dans certains lecteurs (LinkedIn mobile). Pré-rastériser en PNG (Playwright, omit_background).
  5. Rotation d'un cadre photo : jamais transform: rotate() CSS sur un div (rasterisation → bords en escalier) ; incliner par une rotation vecteur à l'intérieur du SVG (`), photo en ` embarqué pleine résolution.
  6. Photos : copies redimensionnées à ~1800-2400px sur le grand côté, qualité ~92 dans outputs/.../photos/ — jamais les originaux pleine résolution (PDF trop lourd) ni sous 2000px (flou au zoom : page.pdf embarque la résolution source telle quelle). Vérifier avec pdfimages -list .
  7. Zone basse ~12% de la slide : la barre du lecteur PDF mobile LinkedIn la recouvre. Aucun contenu critique (visage, tampon, CTA) dans cette zone ; un élément peut y déborder de façon sacrificielle, pas son point focal.

Recette minimale du script d'export (à créer dans 06-graphic-design/scripts/export-carousel-pdf.py si absent) : Playwright Chromium headless, viewport 1080×1350, device_scale_factor=2 ; screenshot de chaque élément [data-raster] (ou classe gradient) et remplacement DOM par ` ; puis page.pdf(width="1080px", height="1350px", printbackground=True, prefercsspagesize=True) avec page-break-after câblé sur chaque .page`.

Précision graphique — grille de repère OBLIGATOIRE

Les alignements comptent autant que le contenu. Jamais « à l'œil » :

  • Overlay de grille activable dans le HTML (lignes horizontales tous les 50px + numéros + axe central vertical) pour MESURER puis positionner ; le retirer pour le livrable final.
  • Un titre posé dans une forme conteneur doit être centré dans la masse de la forme (jamais calé en haut) : mesurer le vide au-dessus et en dessous, égaliser.
  • Aucun mot orphelin en fin de bloc (titre, lede, CTA) : contrôler explicitement les sauts de ligne (lignes de titre voulues, lede en liste de lignes, white-space: nowrap sur les noms propres).
  • Aucun mot composé coupé en fin de ligne : tiret insécable U+2011.
  • Vérifier à la grille, slide par slide, avant livraison : centrages, marges, alternance gauche/droite, débordements, chevauchements.

Anti-uniformité — grammaires visuelles

Un carrousel ne doit pas ressembler au précédent. Choisir/inventer une grammaire visuelle selon le type de contenu, puis la varier :

  • Famille « portrait / humain » : titres centrés, forme de marque conteneur sur cover/finale, visuels de coin, finale chaleureuse. Pour les portraits, témoignages.
  • Famille « thèse / données » : grille cassée, aligné à gauche, cover plein cadre + filet, slides data en split-screen (chiffre héros ↔ caption), finale CTA plein cadre. Pour les posts marché/data.
  • Famille « photo / carnet » : portée par de vraies photos (cadres de marque en SVG vecteur, alternance gauche/droite, fil conducteur graphique entre les slides).

Même palette pour toutes ; ce qui change = composition, alignement, traitement des données/photos. Pour un nouveau sujet, repartir de la famille adaptée et inventer des compositions propres.

Anti-patterns UX LinkedIn (à retirer systématiquement)

  1. Pas de folio « 01 / 10 » — LinkedIn affiche son propre indicateur de progression.
  2. Footer = le domaine seul (ex. {{COMPANY_WEBSITE}}) — pas de « Marque · domaine » redondant. Et jamais footer domaine + bouton CTA domaine sur la même slide : sur la finale, l'URL vit dans le CTA.
  3. Pas d'eyebrow « Acte 1 / Acte 2 » — les titres parlent d'eux-mêmes.
  4. Pas de point final sur les titres (.h-*, punchlines, CTA courts). Les paragraphes (.lede, .body-*) gardent leur ponctuation.
  5. Pas de tiret cadratin () ou reformuler.
  6. Pas d'emoji Unicode (💡, ✅, ✨…) — icône de marque depuis 01-brand/assets/ ou générée via image-generation.
  7. Pas de label sous les visuels expressifs (portraits, mascottes) — ils se lisent d'eux-mêmes.
  8. Flèche de progression → (droite) sur le hook, jamais ↓ (le carrousel se lit en swipe horizontal).
  9. Pas de taille hors échelle, pas de gap -carrousel-.md` (audience, copy du post, plan de slides + passe catalogue + rythme, validation).
  • Source + export : 06-graphic-design/outputs/carrousel--/index.html et exports/.pdf.
  • Calendrier : statut mis à jour dans 02-strategy/calendar/calendar.md (+ {{EDITORIALCALENDARTOOL}} si configuré).

Les assets contextuels générés restent en staging dans outputs/ ; ils ne migrent vers 01-brand/assets/ (avec fiche index.md) qu'après validation humaine.

Personnalisation par marque

{{CAROUSELSPECIFICRULES}}

Règles état de l'art (2026)

Voir docs/etat-de-lart/social-linkedin.md pour le détail sourcé :

  1. Le carrousel/document est le format n°1 sur LinkedIn en 2026 : 3,71 % d'engagement vs 1,80 % pour la vidéo (Metricool, 673 k posts) ; +278 % vs vidéo (Buffer, 2 M posts). L'assumer dans les recommandations de mix.
  2. Slide 1 = hook autonome lisible dans le feed — elle doit fonctionner seule, avant tout swipe et sans le texte du post.
  3. Optimiser chaque slide pour le swipe : tension, question ouverte ou série numérotée qui donne envie d'ouvrir la suivante — les swipes et saves comptent dans l'engagement « invisible » qui monte (+14 %).
  4. Juger la performance sur impressions, swipes et saves, pas sur les likes (en baisse structurelle de −13 %).

Skills associées

  • slides — présentations projetées 1920×1080 (pas pour LinkedIn)
  • image-generation — génération d'icônes / illustrations brand-compliant (consulte d'abord 01-brand/assets/index.md)
  • social-content — copy du post qui accompagne le carrousel
  • copy-editing — relecture de la copy
  • brand-check — validation finale obligatoire

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.