К основному содержанию
скилл GitHub Copilot официальный · GitHub

commit-message-storyteller — скилл для GitHub Copilot

Анализирует git diff или описание правок и составляет текст коммита по стандарту Conventional Commits с объяснением причин изменений.

Установить в GitHub Copilot · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add github/awesome-copilot --skill commit-message-storyteller
Открыть на GitHub

Что делает commit-message-storyteller

Скилл принимает вывод git diff, git diff --staged или список изменений. По именам файлов и логике правок он определяет тип коммита по Conventional Commits: feat, fix, refactor, perf или другой подходящий тип. Заголовок строится в повелительном наклонении до 72 символов. Тело сообщения объясняет контекст: какую проблему решали и почему выбран такой подход.

При обнаружении разнородных правок скилл предложит разбить диф на отдельные коммиты. Для критических изменений он добавит секцию BREAKING CHANGE:, а для задач — ссылки вида Closes #123. Саму команду git commit скилл не выполняет, поэтому создавать коммиты нужно вручную или через отдельный git-commit. Инструмент подойдет командам, которым нужна понятная история правок в pull request.

Какие задачи решает

  • сформулировать сообщение коммита по спецификации Conventional Commits
  • разбить смешанный git diff на несколько отдельных коммитов
  • описать причину изменений в теле коммита на основе анализа кода
  • добавить ссылки на связанные issue и предупреждения о breaking changes

Примеры запросов агенту

  • write a commit message for my staged changes
  • what should I commit this as?
  • summarize my diff

Как установить commit-message-storyteller

1Через Skills CLI (Vercel)

npx skills add github/awesome-copilot --skill commit-message-storyteller

2GitHub CLI

gh skill install github/awesome-copilot commit-message-storyteller

3Вручную: положить файлы

.github/skills/commit-message-storyteller/SKILL.md

Из того же набора554

Весь набор →
git-commit официальный github Скилл разбирает изменения Git, выбирает связанные файлы и создаёт коммит в формате Conventional Commits. Пригодится, когда нужно закоммитить одну или несколько логических частей изменений. GitHub Copilot 47 165установок excalidraw-diagram-generator официальный github Скилл превращает описание на обычном языке в диаграмму Excalidraw. Подойдёт, когда нужно показать процесс, связи между объектами или устройство системы. GitHub Copilot 31 639установок multi-stage-dockerfile официальный github Скилл помогает создавать многоэтапные Dockerfile для разных языков и фреймворков. Пригодится, когда важны размер и состав runtime-образа. GitHub Copilot 29 688установок documentation-writer официальный github Скилл для создания технической документации по фреймворку Diátaxis: туториалы, гайды, справки и объяснения. Предлагает структуру перед написанием. GitHub Copilot 27 757установок prd официальный github Собирает из идеи структурированный PRD с пользовательскими историями, техническими требованиями и рисками. Подходит для планирования новых функций, в том числе с AI. GitHub Copilot 24 035установок refactor официальный github Скилл помогает менять структуру кода без изменения внешнего поведения. Подойдёт для постепенной уборки сложных функций, дублирования и кодовых запахов. GitHub Copilot 22 321установок java-springboot официальный github Задаёт практики разработки Spring Boot-приложений: от структуры проекта до тестов и безопасности. Пригодится, когда Copilot пишет или проверяет Java-код. GitHub Copilot 21 272установок create-readme официальный github Скилл изучает проект и создаёт структурированный README.md. Подойдёт, когда документацию нужно собрать по коду и файлам проекта. GitHub Copilot 19 081установок

Похожие

spawn Alireza Rezvani Запускает параллельных субагентов в изолированных git-ворктри для решения одной задачи наперегонки. Пригодится, когда нужно проверить разные подходы к коду. Claude Code 1 431установок merge Alireza Rezvani Скилл для Claude, который вливает ветку лучшего агента в базовую, архивирует проигравших тегами и чистит worktrees. Нужен, когда сессия AgentHub закончена и пора зафиксировать результат. Claude Code 1 409установок eval Alireza Rezvani Оценивает и ранжирует результаты работы агентов AgentHub по метрикам или с помощью LLM-судьи. Помогает выбрать лучшее решение сессии. Claude Code 1 408установок code-reviewer Alireza Rezvani Анализирует pull request на риски и сложность, ищет нарушения SOLID и генерирует отчёты ревью. Пригодится при проверке изменений перед слиянием веток. Claude Code 1 130установок triage Matt Pocock Скилл проводит issue и внешние PR через роли триажа, проверку и подготовку брифа для агента. Подойдёт мейнтейнеру, который разбирает очередь задач. Claude Code 990 453установок code-review Matt Pocock Проверяет изменения от выбранной точки по стандартам репозитория и требованиям задачи. Нужен для ревью ветки, PR или незавершённой работы. Claude Code 789 521установок implement Matt Pocock Выполняет задачу по спецификации или тикетам, ведёт работу через тесты и завершает её ревью с коммитом. Подходит для задач, где нужен дисциплинированный цикл разработки. Claude Code 774 700установок git-guardrails-claude-code Matt Pocock Скилл ставит хук Claude Code, который останавливает опасные Git-команды до их запуска. Нужен, если агент не должен делать push или удалять изменения. Claude Code 499 069установок

Вопросы о commit-message-storyteller

Как установить commit-message-storyteller в GitHub Copilot?

Установите скилл командой gh skill install github/awesome-copilot commit-message-storyteller или npx skills add github/awesome-copilot --skill commit-message-storyteller. Также можно скопировать файл .github/skills/commit-message-storyteller/SKILL.md.

Что делает commit-message-storyteller?

Он читает вывод git diff или текстовое описание правок и возвращает готовое сообщение коммита по правилам Conventional Commits с заголовком до 72 символов и поясняющим телом.

Выполняет ли скилл коммит в репозиторий?

Нет, скилл только генерирует текст сообщения в блоке кода. Для добавления файлов в индекс и выполнения коммита используйте скилл git-commit или стандартные команды git.

Исходный текст

SKILL.md · MIT
---
name: commit-message-storyteller
description: 'Analyzes git diffs or staged changes and generates narrative commit messages that explain WHY a change was made, not just what changed — following Conventional Commits format. Use when asked to "write a commit message", "describe my changes", "what should I commit this as", or "summarize my diff". Works with git diff output, staged files, or plain descriptions of changes. Does not run git commit; to stage files and make the commit, use the git-commit skill.'
---

# Commit Message Storyteller

Transforms raw git diffs and change descriptions into clear, story-driven commit messages that follow the [Conventional Commits](https://www.conventionalcommits.org/) specification. Instead of "update file.js", you get messages that communicate intent, context, and impact.

## When to Use This Skill

- User says "write a commit message"
- User pastes a git diff or describes code changes
- User says "what should I commit this as?" or "summarize my diff"
- User wants better commit history for their team or open-source project
- User is preparing a pull request and wants meaningful commit messages

## Prerequisites

Have at least one of the following ready:

- Output from `git diff` or `git diff --staged`
- A description of what you changed and why
- A list of modified files

## How It Works

### Step 1: Gather the Change Context

Ask the user (or infer from the diff) for:

1. **What changed** — files, functions, logic affected
2. **Why it changed** — bug fix, new feature, refactor, performance, etc.
3. **Who/what triggered it** — issue number, user request, tech debt, etc.

If the user provides a raw `git diff`, extract this context automatically from the diff.

### Step 2: Identify the Commit Type

Map the change to a Conventional Commits type using this guide:

| Type | Use When |
| ------ | ---------- |
| `feat` | A new feature or capability is added |
| `fix` | A bug or incorrect behavior is corrected |
| `refactor` | Code restructured without changing behavior |
| `perf` | A change that improves performance |
| `docs` | Documentation only changes |
| `style` | Formatting, whitespace, missing semicolons (no logic change) |
| `test` | Adding or updating tests |
| `build` | Build system or dependency changes |
| `chore` | Other maintenance that does not change source or tests |
| `ci` | CI/CD pipeline changes |
| `revert` | Reverting a previous commit |

See `references/conventional-commits-guide.md` for detailed examples.

### Step 3: Write the Commit Message

Follow this structure:

```text
<type>(<optional scope>): <short imperative summary>

<body — the story: why this change was made, what problem it solves>

<footer — issue refs, breaking change notices>
```

#### Rules for Each Part

**Subject line (first line):**

- Use imperative mood: "add", "fix", "remove" — not "added" or "fixes"
- Max 72 characters
- No period at the end
- Lowercase after the colon

**Body (the story):**

- Explain the *why*, not the *what* (the diff already shows the what)
- Describe the problem that existed before this change
- Mention any alternatives considered if relevant
- Keep lines under 100 characters
- Separate from subject with a blank line

**Footer:**

- Reference issues: `Closes #123`, `Fixes #456`, `Refs #789`
- Mark breaking changes: `BREAKING CHANGE: <description>`

### Step 4: Generate Output

Produce the commit message in a copyable code block, followed by a one-line plain-English explanation of the story you told.

**Example output:**

```text
fix(auth): prevent token refresh loop on expired sessions

When a user's session expired mid-request, the auth middleware was
triggering a token refresh, which itself failed validation and triggered
another refresh — causing an infinite retry loop that crashed the app.

This adds a recursion guard flag that aborts the refresh cycle if a
refresh is already in progress, returning a clean 401 instead.

Closes #312
```

> **Story told:** A silent infinite loop on session expiry was crashing the app; this stops the cycle early and returns a clean error.

---

## Multiple Commits from One Diff

If the diff contains **logically separate changes**, split them into multiple commit messages and tell the user. Use this heuristic:

- Different files with unrelated purposes → likely separate commits
- Same file but distinct concerns (e.g., bug fix + refactor) → suggest splitting
- Everything tightly coupled → one commit is fine

---

## Edge Cases

| Situation | How to Handle |
| ----------- | --------------- |
| User provides no context beyond a diff | Infer type and scope from file names and changed symbols |
| Changes span many files with no clear theme | Ask: "Is this one logical change, or multiple?" |
| Breaking change detected | Add `BREAKING CHANGE:` footer automatically |
| User says "keep it short" | Omit body, just write a strong subject line |
| No issue number available | Omit the footer entirely |

---

## Quick Reference

```bash
# Get your staged diff to paste into Copilot
git diff --staged

# Or get the last uncommitted working tree changes
git diff
```

See `references/conventional-commits-guide.md` for type examples and scope guidelines.

© github · MIT · github/awesome-copilot

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой