Revue des posts réseaux sociaux

VérifiéPrudence

Réviser et rédiger les posts de réseaux sociaux accompagnant les articles de blog, en évaluant contre une rubrique et en respectant les contraintes par plateforme.

Spar Skills Guide Bot
ContenuIntermédiaire
31/10/2026
Claude CodeCursorCodex
#social-media#copywriting#editorial-review#blog#content-repurposing

Recommandé pour

Synthèse automatique

Relit et corrige les accès réseaux sociaux (X, LinkedIn, Bluesky) rédigés pour un article de blog, en préservant le suspense de l'article et en imposant les règles de forme de chaque plateforme.

Points forts

  • Sépare clairement la critique (échec uniquement sur des règles dures : voix, hashtags, URL, markdown, limite de caractères) de la réécriture, ce qui évite les réécritures inutiles.
  • Impose une réparation au changement minimal avec des exemples concrets (supprimer un hashtag, remplacer « I » par « we », couper la fin), plutôt qu'une refonte stylistique.
  • Exige que chaque chiffre, nom ou attribution du brouillon soit traçable jusqu'au corps de l'article, et pas au titre, au slug ou à la meta description.
  • Rappelle l'objectif éditorial central : donner envie de lire l'article sans en révéler la conclusion, avec des consignes sur la voix naturelle et les tics d'écriture IA.

Limites

  • Fortement lié au contexte Pulumi (comptes corporate, ton « we », plateformes retenues) et peu réutilisable tel quel pour un compte personnel.
  • Dépend de fichiers de référence externes (references/critique-rubric.md, references/writing-guide.md) non fournis ici : sans eux, les critères exacts et les limites de caractères ne sont pas connus.
  • Ne publie ni ne récupère rien via les API : il faut lui fournir le texte social existant et le corps de l'article.
Quand l'utiliser

À utiliser en revue de PR quand un article de blog est accompagné d'un bloc de copy sociale à valider ou à compléter pour plusieurs plateformes.

Quand l'éviter

À éviter si vous cherchez un résumé fidèle et complet de l'article, ou si vous rédigez pour un compte personnel avec une voix à la première personne.

Analyse de sécurité

Prudence
Score qualité82/100

The content is an ordinary editorial workflow: it reads a blog post's frontmatter, evaluates social copy, runs a local python3 length check, spawns sub-agents, and posts a PR comment with gh. There is no destructive command, no credential/secret handling, no obfuscated payload, no network exfiltration, and no instruction attempting to override the auditor. The only meaningful risks are the undeclared tool surface (bash/gh/sub-agent usage) and the comment-based agent re-trigger CTA, both of which are legitimate but consequential, so 'caution' rather than 'safe'.

Points d'attention
  • •No tools are declared in `declared_allowed_tools`, yet the workflow instructs the agent to run shell commands (`python3` character-count checks), read repo files, and post to GitHub via `gh pr comment` — the tool surface should be declared explicitly so reviewers know what capabilities are granted.
  • •The skill emits GitHub comments containing a CTA (`@claude please update …`, `/social-review`) that re-triggers an agent workflow; this is an intentional automation loop, but it is a write/triggering action executed against the repository and should be bounded (e.g., only on trusted contributors' PRs) to avoid being abused as an agent-invocation vector.
  • •No allowed-tools declared, yet the skill directs bash execution (`python3 -c "print(len(...))"`, `git diff`) and network writes via `gh pr comment` — the effective permission surface is wider than the manifest advertises.
  • •Delegates evaluation and drafting criteria to three unbundled reference files (`references/critique-rubric.md`, `references/writing-guide.md`, `references/suggestions-rubric.md`) that are not part of this listing; unverified content would be loaded into sub-agent prompts and could carry injected instructions.
  • •`gh pr comment` performs a persistent public write to the PR; bounded by the PR number supplied in the workflow prompt, but it is a state-changing, externally visible action triggered by an automated agent.
  • •Reads local repo state (`.social-check-output.txt`, uncommitted `git diff`) — low risk, scoped to the working tree.
Comment cette analyse est faite

Exemples

Review the social block on a blog PR
Review the social media copy for content/blog/migrating-200-stacks/index.md — check the X, LinkedIn and Bluesky text against the rubric and fix anything that hard-fails.
Fill in a missing platform
The social block for content/blog/policy-as-code-lessons/index.md has X and LinkedIn but no Bluesky entry. Read the post body and draft a Bluesky version that teases the article without spoiling the conclusion.
Repair without rewriting
Our LinkedIn draft for content/blog/iac-cost-audit/index.md is 322 characters and ends with a #DevOps hashtag. Fix only what breaks the rules — don't rewrite the copy.

user-invocable: true description: Social media review for blog post PRs argument: optional file path to a blog post (e.g., content/blog/my-post/index.md)

Social Media Review

Goal

Tee up the article. Don't deliver it. The post's job is to set up what the article reveals — the reader has to read the article to get the reveal. If a reader can skip the article after reading the post, the post failed.

Principles

  • Curiosity over completeness. Withhold the key insight, approach, or verdict. Reveal enough to create tension, not enough to satisfy it.
  • Concrete over abstract. Specific numbers, scenarios, and outcomes beat generic claims. "We migrated 200 stacks in three months" beats "we improved our migration process."
  • Reader's perspective. Judge copy as a reader would — would I want to keep reading after this? Not as an editor checking boxes.
  • Natural voice. Posts should sound like a person wrote them, not like they were generated. No staccato fragments, no em dash chains, no constructed parallelism.

These posts are published from Pulumi's corporate accounts, not from individual authors.

Flow

  1. Get the posts — find the social copy to review (see Local/CI context below). Read the blog body too — you'll need it for any platforms that are missing or unsalvageable.

  2. Review — evaluate each platform's existing copy against the critique rubric in references/critique-rubric.md. Default verdict is PASS; only FAIL on hard-rule breaks (banned phrases, "I" voice, URL in body, hashtags, markdown, paragraph structure, char limits). Stylistic concerns are NOT failure conditions here. An empty string ("") or omitted platform key counts as missing — skip the critic for that platform and route it to step 3's draft branch.

  3. Repair or draft — for each platform that didn't PASS:

    • Existing copy that hard-fails — produce minimum-change copy. Preserve the original voice, specifics, and structure; change only what's needed to satisfy the rule that broke. A hashtag at the end? Drop the hashtag. "I" voice? Swap to "we". URL in body? Remove it. Char overflow? Trim the tail. Substantial rewrites only when the original is unsalvageable (multiple compounding rule breaks, wrong specifics, or content unrelated to the article).
    • Missing platform OR empty string OR existing copy is empty / LLM-fill junk — draft fresh from the blog post. Read the blog body before drafting. Every specific in the draft (number, named tool, named person, attribution, percentage, comparison) must trace to a line in the blog body — do NOT pull numbers from the URL slug, title, or meta_desc. If the article is by a single named author writing personal experience, name them in third person; otherwise corporate "we". Use references/writing-guide.md for shape (see "Drafting from a blank social: block" and "Spotting and replacing LLM-fill copy"). Honor platform structure: X = 2 paragraphs, LinkedIn = multiple short paragraphs, Bluesky = 2 paragraphs.

    What minimum-change repair looks like:

    • Hashtag drop: Define your rules once and catch errors before they hit stacks. #DevOps → delete #DevOps. ~8 chars changed; everything else identical.
    • Voice swap: Looking ahead, I'm rapidly expanding platform capabilities → swap I'm to we're. ~2 chars changed; specifics, structure, and surrounding sentences untouched.
    • Trim to fit: if the post is 322/255 chars, drop the appended sentence (or the most recent addition) rather than recasting. The cut should be a clean tail trim, not a rewrite.

    If the repair changes more than the rule break demands — recasting paragraphs, swapping verbs, "improving" the voice — back up. The critic only complained about one thing.

    Verify drafted specifics against the blog body before step 4. Every number, name, and attribution must appear in the body — not the title, slug, or meta_desc. If a claim doesn't trace, drop it or replace it.

  4. Verify character counts — run python3 -c "print(len('''<copy>'''))" for ALL repaired or drafted copy before submitting to critique. Limits: X = 255, LinkedIn = 2950, Bluesky = 300. Revise any that exceed the limit. Do not skip this step — sending over-limit copy to the critique loop wastes a round.

  5. Critique loop — launch a sub-agent (Agent tool) to validate the repaired/drafted copy. The sub-agent should read references/critique-rubric.md and evaluate the copy only (not the blog post). If FAIL, revise and re-critique. You may iterate up to 2 times (3 total critiques). If the copy still fails after the third critique, present the best version with a note about which issues remain.

  6. Suggestions pass — for any platform whose original copy passed the critic without needing a repair, launch a separate sub-agent (Agent tool) against references/suggestions-rubric.md to surface advisory style notes (missing pointer, curiosity gap closed, weak opener, summarizes article, etc.). This NEVER affects the verdict — PASS stays PASS. Skip this pass for any platform that was repaired or drafted from scratch — the new copy is the actionable feedback already; layering advisory notes on top is noise.

  7. Output — present the review, any repaired/drafted copy, and the suggestions section.

Output format

Keep the review short and scannable. A blogger should be able to read it in 30 seconds and know exactly what to fix.

For each platform, show the verdict in the heading:

  • #### Platform — PASS if the original copy passed the critic
  • #### Platform — FAIL if the original copy failed the critic and was repaired
  • #### Platform — missing if the platform had no copy and was drafted

For FAILs, include reasons as bullet points (the hard rule broken). No long analysis — the reasons plus the suggested copy are enough.

When every platform is missing (the post has no social: block, or all three are empty), don't render three — missing headings that each say the same thing. Write one line instead: No social copy in the frontmatter yet — drafted copy for all three platforms is below.

After the per-platform reviews, if any platforms were repaired OR drafted, present the new copy under ### Suggested copy with character counts, collapsed: put the copy inside <details> with the summary <summary>Suggested copy for N platform(s) — click to expand</summary>, then a blank line (GitHub needs it to render the blockquotes), then the copy, then </details>.

If any platform's original copy passed without needing a repair, present advisory notes from the suggestions pass under ### Suggestions (advisory), grouped by platform, collapsed the same way (<summary>N advisory note(s) — none of them block — click to expand</summary>). Only include platforms that ran the suggestions pass (i.e., not the repaired ones, not the missing ones). If all run platforms returned "no suggestions", omit this section entirely — do not write ### Suggestions (advisory) followed by silence. Suggestions never change the PASS/FAIL verdict.

In CI, open with one orienting line directly under ## Social Media Review, because authors who don't post to social media for work read this comment as a request they can't fulfil (reader feedback, 2026-08-28):

> [!NOTE]
> Pulumi's accounts post this copy after the blog goes live — you don't need a social account of your own. Only a character-limit FAIL fails a check; everything else here is optional.

Example output: all PASS, no advisory

## Social Media Review

### content/blog/ai-coding-frameworks/index.md

#### X — PASS
#### LinkedIn — PASS
#### Bluesky — PASS

Example output: PASS with advisory notes

## Social Media Review

### content/blog/ai-coding-frameworks/index.md

#### X — PASS
#### LinkedIn — PASS
#### Bluesky — PASS

---

### Suggestions (advisory)

These are stylistic notes — they don't block the post.

**X**
- Opening "There's a common challenge teams face" earns nothing — lead with the named tool or specific number from the article
- Final line summarizes the verdict; withhold which framework won

**LinkedIn**
- Missing pointer — the post just ends; add a line that signals there's more in the article

Example output: FAIL repair + missing draft + PASS with advisory

The original copy being reviewed:

X (309 chars, over the 255 limit):

AI coding agents fail in recognizable ways: context fades, tests get skipped, scope expands past what you asked for. Three community teams built frameworks for this, each taking a different approach.

We tested all three on real infrastructure work. Which one helps depends on which problem keeps hitting you.

LinkedIn (passes hard rules, but summarizes):

There is a pattern that teams building with AI coding agents tend to hit on longer projects. The first session is impressive. By the third, the agent has lost track of earlier requirements and started adding infrastructure nobody asked for.

The context window is the core issue. It fills up, and earlier instructions carry less weight as it does. Writing better prompts helps at the start but does not solve the underlying problem.

Three community frameworks tackled this in different ways. We spent a few weeks running all three on real Pulumi infrastructure work. Which one helps most comes down to which problem keeps showing up for you.

Bluesky: not provided.

## Social Media Review

> [!NOTE]
> Pulumi's accounts post this copy after the blog goes live — you don't need a social account of your own. Only a character-limit FAIL fails a check; everything else here is optional.

### content/blog/ai-coding-frameworks/index.md

#### X — FAIL

Reasons:
- Over character limit: 309 chars vs. 255 limit

#### LinkedIn — PASS

#### Bluesky — missing

No copy provided. Suggested copy drafted below.

---

### Suggested copy

<details>
<summary>Suggested copy for 2 platforms — click to expand</summary>

**X** (249/255 chars) — clean tail trim; final sentence dropped, everything else identical:
> AI coding agents fail in recognizable ways: context fades, tests get skipped, scope expands past what you asked for. Three community teams built frameworks for this, each taking a different approach.
>
> We tested all three on real infrastructure work.

**Bluesky** (197/300 chars) — drafted from the article:
> We ran three AI coding frameworks on the same Pulumi infrastructure project for a few weeks. One caught scope drift the other two missed. One we probably won't use again.
>
> Here's how they compared.

</details>

---

### Suggestions (advisory)

<details>
<summary>2 advisory notes — none of them block — click to expand</summary>

**LinkedIn**
- "There is a pattern that teams building with AI coding agents tend to hit" is a generic opener — lead with the speedup or the bug the framework caught
- Final paragraph reveals the article's conclusion ("which helps comes down to which problem keeps showing up") — withhold the mapping so the reader still has something to find out

</details>

---

To apply these suggestions, comment: `@claude please update the social posts in the frontmatter with the suggested copy from the social media review above`

Local context

Unless the prompt explicitly says "You are running in a CI environment", you are running locally. Follow this section, not the CI section.

  1. Read the blog post at the given path. If no path is given, look for blog posts with uncommitted changes (git diff --name-only and git diff --cached --name-only) that match content/blog/*/index.md.
  2. Extract the social: block from the frontmatter (twitter, linkedin, bluesky).
  3. Run the flow above.
  4. Print the full review and any suggested copy directly in the conversation. Do not post to GitHub. Do not include a CTA.

CI context

When running in CI:

  1. Read .social-check-output.txt for the list of posts to review and their social copy.
  2. Run the flow above.
  3. Post your findings as a single PR comment using gh pr comment <PR_NUMBER> --body "<your review>". The PR number is provided in the workflow prompt. Title the comment ## Social Media Review.
  4. End the comment with a CTA:
To apply these suggestions, comment: `@claude please update the social posts in the frontmatter with the suggested copy from the social media review above`

To re-run the social media review after updates, comment: `/social-review`

Du fichier au premier essai

Le téléchargement contient exactement le contenu affiché sur cette fiche. Cette copie peut différer de la dernière version du dépôt source.

Consulter la source et ses fichiers annexes

Ce téléchargement contient uniquement SKILL.md. Les scripts, références, modèles et dépendances éventuels ne sont pas inclus. Récupérez les fichiers nécessaires depuis la source en conservant leur arborescence avant de poursuivre.

1. Télécharger le fichier

Télécharger SKILL.md

Depuis la racine d’un projet de test, enregistrez le fichier sous .skill-downloads/social-media-post-review-mvj1ocnc/SKILL.md, ou utilisez la commande suivante. Ce dossier sert à examiner la skill avant son installation.

Commande pour macOS/Linux ou WSL : un shell POSIX et curl sont nécessaires. Sous Windows sans WSL, utilisez le bouton de téléchargement et créez le dossier manuellement.

mkdir -p '.skill-downloads/social-media-post-review-mvj1ocnc' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/social-media-post-review-mvj1ocnc/download' --output '.skill-downloads/social-media-post-review-mvj1ocnc/SKILL.md.part' && mv '.skill-downloads/social-media-post-review-mvj1ocnc/SKILL.md.part' '.skill-downloads/social-media-post-review-mvj1ocnc/SKILL.md'

2. Vérifier les prérequis

Lisez SKILL.md avant de l’utiliser. Si le fichier cite des scripts ou services externes, examinez-les et préparez les accès nécessaires dans votre environnement de test.

Aucune section de prérequis reconnue dans ce fichier. Cela ne signifie pas qu’il est autonome : les bibliothèques, outils et accès peuvent être cités ailleurs dans le contenu ou dans le dépôt source.

Les plateformes de la fiche sont des indications du catalogue. Les chemins ci-dessous suivent la documentation des outils ; ils ne prouvent pas que cette skill y a été exécutée. Aucune version minimale de ces outils n’est attestée pour cette fiche.

3. Charger la skill

Le fichier ne fournit pas un en-tête name/description exploitable pour cette procédure native. Le téléchargement reste disponible pour lecture ; utilisez le mode manuel ci-dessous.

Mode manuel ou autre outil : joignez SKILL.md à une conversation, ou ouvrez-le dans un agent capable de lire les fichiers. Ajoutez les ressources annexes nécessaires. Il n’existe pas de dossier universel reconnu par tous les outils.

4. Faire un premier essai

Utilisez une entrée courte et fictive : un endpoint d’API, un petit document ou un brief d’interface. Dans une nouvelle conversation, joignez le fichier ou donnez son chemin à l’agent, puis adaptez cette demande :

Lis .skill-downloads/social-media-post-review-mvj1ocnc/SKILL.md et applique ses instructions à cet exemple : [décrire une entrée de test]. Indique les fichiers, dépendances ou accès qui manquent. Produis le résultat demandé par la skill sans inventer de données ni exécuter de script non examiné.

Résultat attendu : une sortie correspondant aux instructions de la skill, ou une liste précise des prérequis manquants. Une simple confirmation de lecture ne valide pas le premier usage. Si une ressource externe est indisponible, ce parcours reste à tester.

Skills similaires