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.
69
85%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Generate social media content from CHANGELOG.md entries. Produces 8 outputs by default (4 formats x 2 languages).
/release to create social announcements/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)| 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 |
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.
Read CHANGELOG.md from the project root.
Single version:
## [{version}]## [ line### Added, ### Changed, ### Fixed sectionsWeek range:
## [X.Y.Z] - YYYY-MM-DD entries where date falls in rangeError: version not found -> List last 5 versions, suggest latest.
Error: week has no entries -> Show date of last release, suggest that version.
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.
Apply mappings from references/content-transformation.md:
Validate against references/tone-guidelines.md DO/DON'T checklist.
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:
Ask target audience:
devs (technical depth)tech-leads (impact focus)general (accessible language)all (default, balanced)Ask primary highlight:
Confirm selection and proceed to step 5.
Compute score for each entry:
score = (category_weight * 3)
+ (has_number * 2)
+ (named_source * 1)
+ (new_file * 1)
+ (min(impact_files, 3))
+ (breaking * 2)Select top 3-4 entries by score. Highest score = hook line.
If all scores < 3: Output "No social content recommended for this version. Use --force to generate anyway." and exit (unless --force).
For each requested format (default: all 4) and language (default: both):
assets/Links:
| Format | Link Target |
|---|---|
| Landing site URL | |
| GitHub repo URL | |
| Newsletter | Both (landing + GitHub) |
| Slack | GitHub repo URL |
URLs:
https://{DOMAIN}/https://github.com/{OWNER}/{REPO}Display each generated post in a fenced code block, labeled by format and language:
## LinkedIn (FR)
```text
[content]
`` `
## LinkedIn (EN)
```text
[content]
`` `
## Twitter/X (FR)
```text
[content]
`` `
...If --save flag: write all outputs to [project-docs]/social-posts/YYYY-MM-DD-vX.Y.Z.md (for version) or [project-docs]/social-posts/YYYY-MM-DD-week.md (for week). Create [project-docs]/social-posts/ directory if it doesn't exist.
| Error | Response |
|---|---|
| No argument | Display usage block |
| Invalid argument | Display usage block with examples |
| Version not found | List 5 most recent versions, suggest latest |
| Week has no entries | Show date of last release, suggest version |
| All entries MAINTENANCE (score 0) | "No social content recommended. Use --force to override." |
| CHANGELOG.md not found | "CHANGELOG.md not found in project root." |
references/tone-guidelines.md - DO/DON'T rules, emoji budget, language registerreferences/changelog-parsing-rules.md - CHANGELOG format, extraction, scoring algorithmreferences/content-transformation.md - Technical -> user value mappings (30+)assets/linkedin-template.md - ~1300 chars, hook + bullets + CTA + hashtagsassets/twitter-template.md - 280 chars single or 2-3 tweet threadassets/newsletter-template.md - ~500 words, structured sectionsassets/slack-template.md - Compact, emoji-rich, Slack formattingexamples/version-output.md - Full example output for v3.20.5examples/week-output.md - Full example output for week 2026-01-27/guide-recap latest right after /release to prepare social posts--interactive the first few times to understand the scoring--format=linkedin --lang=fr when you only need one specific output--save outputs are gitignored via [project-docs]/ convention752edfe
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.