New to Claude Skills? Learn how to install them →

rtk-ai on GitHub

Repo Recap

Free

Generate structured recaps of your repository's state.

by rtk-ai75.5k stars on rtk-ai/rtk
2 views
Updated Aug 7, 2026
Get this skill

Free · Opens the source repo

What Repo Recap does

Repo Recap is a command-line skill designed to provide developers and teams with a comprehensive overview of their GitHub repository's current state. By executing a series of GitHub CLI commands, it gathers data on open pull requests (PRs), open issues, recent releases, and a summary of repository activity. The output is formatted in Markdown, making it easy to share with team members or stakeholders. This tool is particularly useful for keeping everyone informed about ongoing work and project health without manually sifting through GitHub's interface.

The skill requires the user to be inside a Git repository and have the GitHub CLI authenticated. It checks these prerequisites before proceeding to gather data. Once the necessary conditions are met, it retrieves information such as the number of open PRs and issues, details about contributors, and any recent releases. The skill categorizes PRs into manageable groups based on their status and complexity, helping teams prioritize reviews and identify potential bottlenecks.

Repo Recap also generates an executive summary that highlights key metrics and risks, such as oversized PRs or CI failures. This summary is designed to give a quick snapshot of the repository's health at a glance. The skill supports both English and French, allowing teams to communicate in their preferred language. Overall, Repo Recap is an essential tool for developers and project managers looking to streamline their workflow and maintain clarity in their collaborative efforts.

When to use it

Use Repo Recap when you need to quickly assess the state of a GitHub repository and share that information with your team.

When not to use it

This skill is not suitable for repositories where the GitHub CLI is not set up or where users are not familiar with command-line tools.

What you can build with it

Team Standup Preparation

Use Repo Recap to generate a quick overview of the repository's status before team standups, ensuring everyone is informed.

Weekly Project Updates

Generate a recap every week to share with stakeholders, highlighting progress and any blockers in the repository.

Onboarding New Team Members

Provide new team members with a structured recap of the repository to help them understand ongoing work and contributions.

How to install Repo Recap

View source

1. Install with the skills CLI

npx skills add rtk-ai/rtk/repo-recap --agent claude-code

2. Or install it manually

Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.

Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs

Inside SKILL.md

Written by rtk-ai

Repo Recap

Generate a structured recap of the repository state: open PRs, open issues, recent releases, and executive summary. Output is formatted as Markdown with clickable GitHub links, ready to share.

Language

  • Check the argument passed to this skill
  • If en or english → produce the recap in English
  • If fr, french, or no argument → produce the recap in French (default)

Preconditions

Before gathering data, verify:

# Must be inside a git repo
git rev-parse --is-inside-work-tree

# Must have gh CLI authenticated
gh auth status

If either fails, stop and tell the user what's missing.

Steps

1. Gather Data

Run these commands in parallel via gh CLI:

# Repo identity (for links)
gh repo view --json nameWithOwner -q .nameWithOwner

# Open PRs with metadata
gh pr list --state open --limit 50 --json number,title,author,createdAt,changedFiles,additions,deletions,reviewDecision,isDraft

# Open issues with metadata
gh issue list --state open --limit 50 --json number,title,author,createdAt,labels,assignees

# Recent releases (for version history)
gh release list --limit 5

# Recently merged PRs (for contributor activity)
gh pr list --state merged --limit 10 --json number,title,author,mergedAt

Note: author in JSON results is an object {login: "..."} — always extract .author.login when processing.

2. Determine Maintainers

To distinguish "our PRs" from external contributions:

gh api repos/{owner}/{repo}/collaborators --jq '.[].login'

If this fails (permissions), fallback: authors with write/admin access are those who merged PRs recently. When in doubt, ask the user.

3. Analyze and Categorize

PRs — Categorize into 3 groups:

Our PRs (author is a repo collaborator):

  • List with PR number (linked), title, size (+additions, files count), status

External — Reviewable (manageable size, no major blockers):

  • Additions ≤ 1000 AND files ≤ 10
  • No merge conflicts, CI not failing
  • Include: PR link, author, title, size, review status, recommended action

External — Problematic (any of: too large, CI failing, overlapping, merge conflict):

  • Additions > 1000 OR files > 10
  • OR CI failing (reviewDecision = "CHANGES_REQUESTED" or checks failing)
  • OR touches same files as another open PR (= overlap)
  • Include: PR link, author, title, size, specific problem, action taken/needed

Size labels (use in "Taille" column for quick visual triage):

LabelAdditions
XS< 50
S50-200
M200-500
L500-1000
XL> 1000

Format: +{additions}, {files} files ({label}) — e.g., +245, 2 files (S)

Detect overlaps:

Two PRs overlap if they modify the same files. Use changedFiles from the JSON data. If >50% file overlap between 2 PRs, flag both as overlapping and cross-reference them.

Flag clusters:

If one author has 3+ open PRs, note it as a "cluster" with suggested review order (smallest first, or by dependency chain).

Issues — Categorize by status:

  • In progress: has an associated open PR (match by PR body containing fixes #N, closes #N, or same topic)
  • Quick fix: small scope, actionable (bug reports, small enhancements)
  • Feature request: larger scope, needs design discussion
  • Covered by PR: an existing PR addresses this issue (link it)

4. Derive Recent Releases

From gh release list output, extract version, date, and name. List the 5 most recent.

If no releases found, check merged PRs for release-please pattern (title matching chore(*): release *) as fallback.

5. Executive Summary

Produce 5-6 bullet points:

  • Total open PRs and issues count
  • Active contributors (who has the most PRs/issues)
  • Main risks (oversized PRs, CI failures, merge conflicts)
  • Quick wins (small PRs ready to merge — XS/S size, no blockers)
  • Bug fixes needed (hook bugs, regressions)
  • Our own PRs status

6. Format Output

Structure the full recap as Markdown with:

  • # {Repo Name} — Récap au {date} as title (FR) or # {Repo Name} — Recap {date} (EN)
  • Sections separated by ---
  • All PR/issue numbers as clickable links: [#123](https://github.com/{owner}/{repo}/pull/123) for PRs, .../issues/123 for issues
  • Tables with Markdown pipe syntax for all listings
  • Bold for emphasis on actions and risks
  • Cross-references between related PRs and issues (e.g., "Covered by #131")

Empty data handling:

  • 0 open PRs → display "Aucune PR ouverte." (FR) or "No open PRs." (EN) instead of empty table
  • 0 open issues → display "Aucune issue ouverte." (FR) or "No open issues." (EN)
  • 0 releases → display "Aucune release récente." (FR) or "No recent releases." (EN)

7. Copy to Clipboard

After displaying the recap, automatically copy it to clipboard:

# Cross-platform clipboard
clip() {
  if command -v pbcopy &>/dev/null; then pbcopy
  elif command -v xclip &>/dev/null; then xclip -selection clipboard
  elif command -v wl-copy &>/dev/null; then wl-copy
  else cat
  fi
}

cat << 'EOF' | clip
{formatted recap content}
EOF

Confirm with: "Copié dans le presse-papier." (FR) or "Copied to clipboard." (EN)

Output Template (FR)

# {Repo Name} — Récap au {date}

## Releases récentes

| Version | Date | Highlights |
| ------- | ---- | ---------- |
| ...     | ...  | ...        |

---

## PRs ouvertes ({count} total)

### Nos PRs

| PR | Titre | Taille | Status |
| -- | ----- | ------ | ------ |

### Contributeurs externes — Reviewables

| PR | Auteur | Titre | Taille | Status | Action |
| -- | ------ | ----- | ------ | ------ | ------ |

### Contributeurs externes — Problématiques

| PR | Auteur | Titre | Taille | Problème | Action |
| -- | ------ | ----- | ------ | -------- | ------ |

---

## Issues ouvertes ({count} total)

| # | Auteur | Sujet | Priorité |
| - | ------ | ----- | -------- |

---

## Résumé exécutif

- **Point 1**: ...
- **Point 2**: ...

Output Template (EN)

Same structure but with English headers:

  • "Recent Releases", "Open PRs", "Our PRs", "External — Reviewable", "External — Problematic", "Open Issues", "Executive Summary"
  • Action labels: "To review", "Rebase requested", "Split requested", "Trim requested", "CI broken", "Waiting on author", "Feature request", "Quick fix", "Covered by PR"

Notes

  • Always use gh CLI (not GitHub API directly, except for collaborators list)
  • Derive repo owner/name from gh repo view, don't hardcode
  • Keep tables compact — truncate long titles if needed (max ~60 chars)
  • Cross-reference overlapping PRs/issues whenever possible
  • author in gh JSON is an object — always use .author.login

Frequently asked questions about Repo Recap

Similar skills