Claude Skill

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.

Editor's Note

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. Covers when to use, usage, workflow (7 steps).

Page Outline

When to UseUsageWorkflow (7 Steps)LinkedIn (FR)LinkedIn (EN)Twitter/X (FR)Error HandlingReference Files

Source Content

Normalized top-level metadata comes from the directory layer. The body below is the upstream source content for this item.

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:
  • `devs` (technical depth)
  • `tech-leads` (impact focus)
  • `general` (accessible language)
  • `all` (default, balanced)
  • 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 | |--------|-------------| | LinkedIn | Landing site URL | | Twitter | 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)

[content] `` `

LinkedIn (EN)

[content]
`` `

## Twitter/X (FR)

[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 `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." |

## Reference Files

- `references/tone-guidelines.md` - DO/DON'T rules, emoji budget, language register
- `references/changelog-parsing-rules.md` - CHANGELOG format, extraction, scoring algorithm
- `references/content-transformation.md` - Technical -> user value mappings (30+)
- `assets/linkedin-template.md` - ~1300 chars, hook + bullets + CTA + hashtags
- `assets/twitter-template.md` - 280 chars single or 2-3 tweet thread
- `assets/newsletter-template.md` - ~500 words, structured sections
- `assets/slack-template.md` - Compact, emoji-rich, Slack formatting
- `examples/version-output.md` - Full example output for v3.20.5
- `examples/week-output.md` - Full example output for week 2026-01-27

## Tips

- Run `/guide-recap latest` right after `/release` to prepare social posts
- Use `--interactive` the first few times to understand the scoring
- Use `--format=linkedin --lang=fr` when you only need one specific output
- `--save` outputs are gitignored via `[project-docs]/` convention
- Review and personalize before posting (these are drafts, not final copy)

Related Items

Deploy agents, MCP servers, and backends fast logo

Railway - Deploy agents and MCP servers fast

Try Railway