Summary

Transform CHANGELOG entries into social content (LinkedIn, Twitter/X, Newsletter, Slack) in FR + EN. Use after releases or weekly to generate release notes, announcements, social media posts, or recap summaries from guide updates.

SKILL.md

Guide Recap

Generate social media content from CHANGELOG.md entries. Produces 8 outputs by default (4 formats x 2 languages).

When to Use

  • After running `/release` to create social announcements
  • Weekly to summarize multiple releases
  • Before posting on LinkedIn, Twitter/X, newsletter, or Slack

Usage

/guide-recap latest              # Latest released version
/guide-recap v3.20.5             # Specific version
/guide-recap week                # Current week (Monday to today)
/guide-recap week 2026-01-27     # Specific week (Monday to Sunday)

Flags

| Flag | Effect | Default | |------|--------|---------| | `--interactive` | Guide mode: choose angle, audience, highlight | Off (auto-draft) | | `--format=X` | Single format: `linkedin`, `twitter`, `newsletter`, `slack` | All 4 formats | | `--lang=X` | Single language: `fr`, `en` | Both FR + EN | | `--save` | Save output to `[project-docs]/social-posts/` | Display only | | `--force` | Generate even if only maintenance entries | Skip low-score |

Workflow (7 Steps)

Step 1: Parse Input

Parse `$ARGUMENTS` to determine mode:

| Input | Mode | Target | |-------|------|--------| | `latest` | Single version | First `## [X.Y.Z]` after `[Unreleased]` | | `vX.Y.Z` or `X.Y.Z` | Single version | Exact version match | | `week` | Week range | Monday of current week -> today | | `week YYYY-MM-DD` | Week range | That Monday -> following Sunday |

If no argument or invalid argument, display usage and exit.

Step 2: Extract CHANGELOG Entries

Read `CHANGELOG.md` from the project root.

**Single version:**

  • Find line matching `## [{version}]`
  • Extract all content until next `## [` line
  • Parse `### Added`, `### Changed`, `### Fixed` sections

**Week range:**

  • Collect all `## [X.Y.Z] - YYYY-MM-DD` entries where date falls in range
  • Parse all sections from all matching versions

**Error: version not found** -> List last 5 versions, suggest `latest`. **Error: week has no entries** -> Show date of last release, suggest that version.

Step 3: Categorize Entries

For each top-level entry (first-level bullet under `###`), assign a category:

| Category | Weight | Detection | |----------|--------|-----------| | `NEW_CONTENT` | 3 | New files, new sections, new diagrams, new quiz questions | | `GROWTH_METRIC` | 2 | Line count growth, item count changes | | `RESEARCH` | 1 | Resource evaluations, external source integrations | | `FIX` | 1 | Under `### Fixed`, corrections | | `MAINTENANCE` | 0 | README updates, badge syncs, landing syncs, count updates |

See `references/changelog-parsing-rules.md` for detailed classification rules.

Step 4: Transform to User Value

Apply mappings from `references/content-transformation.md`:

  • Technical language -> user benefit
  • Extract concrete numbers
  • Credit named sources
  • Cluster related entries

Validate against `references/tone-guidelines.md` DO/DON'T checklist.

Step 4b: Interactive Mode (--interactive only)

If `--interactive` flag is set, insert between steps 4 and 5:

  • Display candidate highlights with scores:
   Highlights (by score):
   [14] 4 new ASCII diagrams (16 -> 20)     [NEW_CONTENT]
   [ 9] 30 new quiz questions (227 -> 257)   [NEW_CONTENT]
   [ 6] Docker sandbox isolation guide        [NEW_CONTENT]
   [ 1] README updated                        [MAINTENANCE]
  • Ask angle:
  • Auto (highest scored = hook)
  • User picks specific entry as hook
  • Custom angle (user provides theme)
  • Ask target audience:

<!-- truncated -->

View raw file