Claude-code-ultimate-guide guide-recap
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.
git clone https://github.com/FlorianBruniaux/claude-code-ultimate-guide
T=$(mktemp -d) && git clone --depth=1 https://github.com/FlorianBruniaux/claude-code-ultimate-guide "$T" && mkdir -p ~/.claude/skills && cp -r "$T/examples/skills/guide-recap" ~/.claude/skills/florianbruniaux-claude-code-ultimate-guide-guide-recap && rm -rf "$T"
examples/skills/guide-recap/SKILL.mdGuide Recap
Generate social media content from CHANGELOG.md entries. Produces 8 outputs by default (4 formats x 2 languages).
When to Use
- After running
to create social announcements/release - 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 |
|---|---|---|
| Guide mode: choose angle, audience, highlight | Off (auto-draft) |
| Single format: , , , | All 4 formats |
| Single language: , | Both FR + EN |
| Save output to | Display only |
| Generate even if only maintenance entries | Skip low-score |
Workflow (7 Steps)
Step 1: Parse Input
Parse
$ARGUMENTS to determine mode:
| Input | Mode | Target |
|---|---|---|
| Single version | First after |
or | Single version | Exact version match |
| Week range | Monday of current week -> today |
| 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
sections### Fixed
Week range:
- Collect all
entries where date falls in range## [X.Y.Z] - YYYY-MM-DD - 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 |
|---|---|---|
| 3 | New files, new sections, new diagrams, new quiz questions |
| 2 | Line count growth, item count changes |
| 1 | Resource evaluations, external source integrations |
| 1 | Under , corrections |
| 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:
(technical depth)devs
(impact focus)tech-leads
(accessible language)general
(default, balanced)all
-
Ask primary highlight:
- Auto (top score)
- User selects from list
-
Confirm selection and proceed to step 5.
Step 5: Score and Select
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).
Step 6: Generate Content
For each requested format (default: all 4) and language (default: both):
- Read the corresponding template from
assets/ - Fill template fields using scored and transformed entries
- Apply tone-guidelines.md quality checklist
Links:
| Format | Link Target |
|---|---|
| Landing site URL | |
| GitHub repo URL | |
| Newsletter | Both (landing + GitHub) |
| Slack | GitHub repo URL |
URLs:
- Landing:
https://{DOMAIN}/ - GitHub:
https://github.com/{OWNER}/{REPO}
Step 7: Output
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 Handling
| Error | Response |
|---|---|
| No argument | Display usage block |
| Invalid argument | Display usage block with examples |
| Version not found | List 5 most recent versions, suggest |
| Week has no entries | Show date of last release, suggest version |
| All entries MAINTENANCE (score 0) | "No social content recommended. Use to override." |
| CHANGELOG.md not found | "CHANGELOG.md not found in project root." |
Reference Files
- DO/DON'T rules, emoji budget, language registerreferences/tone-guidelines.md
- CHANGELOG format, extraction, scoring algorithmreferences/changelog-parsing-rules.md
- Technical -> user value mappings (30+)references/content-transformation.md
- ~1300 chars, hook + bullets + CTA + hashtagsassets/linkedin-template.md
- 280 chars single or 2-3 tweet threadassets/twitter-template.md
- ~500 words, structured sectionsassets/newsletter-template.md
- Compact, emoji-rich, Slack formattingassets/slack-template.md
- Full example output for v3.20.5examples/version-output.md
- Full example output for week 2026-01-27examples/week-output.md
Tips
- Run
right after/guide-recap latest
to prepare social posts/release - Use
the first few times to understand the scoring--interactive - Use
when you only need one specific output--format=linkedin --lang=fr
outputs are gitignored via--save
convention[project-docs]/- Review and personalize before posting (these are drafts, not final copy)