Skip to main content

release-notes

Generate release notes between two git tags with categorized PR summaries and author attribution

Informações da origem

Repositório
dlt-hub/dlt
Última atividade na origem
18 de fevereiro de 2026 às 10:43
Idioma detectado do SKILL.md
inglês
Estrelas
5.969
Forks
624

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
name
release-notes
description
Generate release notes between two git tags with categorized PR summaries and author attribution
argument-hint
<git-tag> [-- <previous-tag>]
# Generate Release Notes Parse `$ARGUMENTS` to extract: - Everything before `--` is the **release tag** (e.g. `1.22.0`). Referred to as `TAG` below. - Everything after `--` is an optional **previous tag** override. If absent, auto-detect the previous tag. ## Step 1: Validate the tag Check that `TAG` exists as a git tag: ``` git tag -l TAG ``` If the tag does not exist, stop with an error: "Tag `TAG` not found. Please create the tag first and re-run." ## Step 2: Determine the previous tag If a previous tag was provided in `$ARGUMENTS`, validate it exists and use it as `LOWER`. Otherwise, find the previous tag automatically: ``` git tag --sort=-v:refname ``` Walk the sorted list to find the tag immediately before `TAG` (by version order). Set that as `LOWER`. Validate `LOWER` exists. Stop with an error if no previous tag can be determined. ## Step 3: Gather commits Get all commits between the two tags: ``` git log --oneline LOWER..TAG ``` Filter out: - Merge commits (starting with "Merge pull request" or "Merge branch") - Version bump commits (starting with "bumps to version" or "bumps to") Extract PR numbers from the remaining commit messages (pattern `#NNNN`). Every PR number must appear in the final release notes — none may be silently dropped. ## Step 4: Fetch PR metadata For each PR number, fetch metadata using `gh`. Use Task agents to run in parallel batches for efficiency: ``` gh pr view NUMBER --repo dlt-hub/dlt --json number,title,labels,body,author ``` Collect for each PR: - **number**: PR number - **title**: PR title - **author**: `author.login` - **labels**: list of label names - **body**: PR description (first 500 chars sufficient for categorization) ### Handling low-quality PR titles or descriptions If a PR title is vague (e.g. just an issue number, single word) or the body is empty/unhelpful: 1. Check if the PR references an issue (e.g. `fixes #NNN`, `closes #NNN`, `#NNN` in body). If so, fetch the issue: ``` gh issue view NNN --repo dlt-hub/dlt --json title,body ``` 2. If still unclear, look at the PR diff to understand what changed: ``` gh pr diff NUMBER --repo dlt-hub/dlt ``` 3. Write a clear, accurate summary based on what you find. ## Step 5: Categorize PRs Assign each PR to exactly one category using these rules (evaluated in order). **Every PR must be classified** — verify the total count matches. ### Breaking Changes Collect separately (appears at the top, not a standalone category — the PR also appears in its main category). A PR has breaking changes if: - It has a `breaking` label, OR - Its body contains "breaking change" (case-insensitive), OR - Its title contains "breaking" Extract the specific breaking change description from the PR body. ### Highlights A PR is a highlight if: - It has a `highlight` label, OR - It is a significant new feature (title starts with `feat` or `(feat)`) AND the change is impactful — meaning it introduces a new user-facing capability, enables a major use case, or represents substantial effort - Use judgment: not every feature is a highlight. A highlight should be something users would be excited about. Highlighted PRs also appear in their main category (Core Library, etc.) but with a brief entry pointing to the Highlights section. ### Docs - Title or body indicates documentation-only changes - Files changed are only in `docs/` - Has `documentation` label ### Chores - CI/CD improvements, test infrastructure, repo maintenance - Has labels like `ci full`, `tech-debt`, `ci` - Title starts with `chore`, `repo:`, `ci:`, or the change only affects tests/tooling ### Core Library Everything else — features, bug fixes, enhancements to the library itself. ## Step 6: Identify new contributors For each release author, find their first ever merged PR: ``` gh search prs --repo dlt-hub/dlt --author AUTHOR --merged --sort created --order asc --limit 1 --json number,createdAt ``` A contributor is **new** if their first merged PR number falls within the `LOWER..TAG` commit range. ## Step 7: Format the release notes Write the notes in this exact structure: ```markdown ## dlt TAG Release Notes ## Breaking Changes (Only if there are breaking changes. Numbered list.) 1. **Short description** (#NUMBER @author) — Explanation of what broke and how it affects users. ## Highlights - **Feature name** (#NUMBER @author) — Description of the feature and why it matters. ## Core Library - **Feature/fix name** (#NUMBER @author) — Brief description. - **Fix: short description** (#NUMBER @author) ## Docs - Description (#NUMBER @author) ## Chores - **Title** (#NUMBER @author) — Brief description if non-obvious. ## New Contributors - @author made their first contribution in #NUMBER ``` ## Formatting rules: - PR references use `#NUMBER` format (GitHub auto-links them) - Authors use `@login` format (GitHub auto-links them) - Features and significant fixes get bold titles with em-dash descriptions - Minor fixes can be single-line bold entries without descriptions - Omit empty sections entirely (including New Contributors if none) - Within Core Library, group features first, then fixes ## Step 8: Present for approval Display the formatted release notes to the user for review. Include a summary: - Total PRs analyzed - Breakdown by category (with counts) - Number of unique contributors (and how many are new) - List any PRs where you had to infer the description from issue or diff Ask the user to approve or request changes before writing. ## Step 9: Write to file Only after user approval, write the release notes to `/tmp/release-notes-TAG.md`. Report the file path to the user.
Ver no GitHub