Skip to content
Back to skills

Guide Recap

ASecurity

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.

  • 6,113 stars
  • 0 votes
  • 0 copies
  • 8 views
  • Added September 3, 2026
ai-agentsgobashdockergit

Security analysis

A100/100

Pro scans all 10 files and shows the line behind each finding

Scanned October 1, 2026

npx -y skills add FlorianBruniaux/claude-code-ultimate-guide --skill guide-recap --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Guide Recap?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Guide Recap
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/florianbruniaux-guide-recap-claude-code-ultimate-guide/badge)](https://www.skillsdirectory.com/skills/florianbruniaux-guide-recap-claude-code-ultimate-guide)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: guide-recap
description: "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."
allowed-tools: Read Bash
argument-hint: "<latest|vX.Y.Z|week [YYYY-MM-DD]> [--interactive] [--format=linkedin|twitter|newsletter|slack] [--lang=fr|en] [--save]"
effort: low
---

# 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:**
1. Find line matching `## [{version}]`
2. Extract all content until next `## [` line
3. Parse `### Added`, `### Changed`, `### Fixed` sections

**Week range:**
1. Collect all `## [X.Y.Z] - YYYY-MM-DD` entries where date falls in range
2. 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:

1. 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]
   ```

2. Ask angle:
   - Auto (highest scored = hook)
   - User picks specific entry as hook
   - Custom angle (user provides theme)

3. Ask target audience:
   - `devs` (technical depth)
   - `tech-leads` (impact focus)
   - `general` (accessible language)
   - `all` (default, balanced)

4. Ask primary highlight:
   - Auto (top score)
   - User selects from list

5. 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):

1. Read the corresponding template from `assets/`
2. Fill template fields using scored and transformed entries
3. 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)

```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 `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)

Files in this skill

  • SKILL.md7 KB
  • assets/linkedin-template.md2.4 KB
  • assets/newsletter-template.md2.9 KB
  • assets/slack-template.md2 KB
  • assets/twitter-template.md2.1 KB
  • examples/version-output.md5.3 KB
  • examples/week-output.md7.8 KB
  • references/changelog-parsing-rules.md4.8 KB
  • references/content-transformation.md4.3 KB
  • references/tone-guidelines.md2.9 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.