pr-description

Пишет описания PR и заметки о релизах для монорепозитория Sanity. Следует шаблону PR репозитория с разделами «Описание», «Что проверять», «Тестирование» и «Примечания для…»

npx skills add https://github.com/sanity-io/sanity --skill pr-description

PR Description & Release Notes

When creating a PR

Follow the repo's PR template. Always create PRs as drafts. All AI-agent PRs must include the 🤖 bot label.

1. Analyze the changes

Before writing, understand the full diff:

git log main..HEAD --oneline
git diff main...HEAD

2. PR title

Must follow conventional commits (CI-enforced):

type(scope): lowercase description
  • Types: feat, fix, chore, docs, refactor, test, perf, ci
  • Scope: package or area affected (groq, cli, form, schema, deps, etc.)
  • No backticks, quotes, or markdown in the title
  • Description starts lowercase

3. Write the PR body

Lead with why. Only elaborate on the non-obvious. The reviewer can read the diff — they need the context the diff can't give them. Default to terse; expand only where a reader would genuinely wonder.

Priorities for the Description section:

  • Heavy on why — the motivation, the problem being solved, the constraint or incident that forced this change
  • Cover why not — alternatives considered and rejected, one sentence each. This is often the most valuable part: it prevents the reviewer from suggesting a path you've already ruled out. Skip if there were no real alternatives worth mentioning
  • Light on how — only call out approach when it's non-obvious, novel, or a reviewer might reasonably have picked a different path. Skip it for routine changes where the diff speaks for itself
  • Minimal what — the diff shows what changed. One sentence of orientation at most; don't restate file-by-file changes the reviewer can see

Length test: if a sentence would tell the reviewer something they could deduce in 10 seconds from the diff, cut it. A good PR description is often 3–5 sentences total. Bulleted lists of "alternatives considered" should be one line per alternative, not a paragraph.

If you catch yourself writing "this PR renames X to Y" or "adds a new function Z", delete it. If you're explaining why X needed to be renamed or why Z exists (and why the obvious alternative wasn't chosen), keep it — but stay brief.

Use all four sections:

Description

Focus on why and why not, tersely:

  • The problem or context the diff doesn't reveal (one short paragraph)
  • Alternatives considered and why rejected (one line each, only if they were real candidates)
  • How only when non-obvious or debatable
  • What reduced to a one-line orientation

What to review

  • Which files/areas matter most
  • Anything tricky or non-obvious
  • Which packages are affected (this is a monorepo)

Testing

  • Tests added or modified
  • If no automated tests: how you tested and why automation wasn't practical

Notes for release

This section is used by the docs team to write release notes.

If not needed, write one of:

  • N/A — internal-only changes
  • N/A – Part of feature X — partial implementation not yet enabled
  • N/A – Internal only — tooling/chore work

If needed, write for end users and the docs team:

  • What changed from a user perspective
  • How to use it (code snippets if applicable)
  • Limitations or breaking changes

Always end this section with a --- horizontal rule. The release-notes automation stops at the first --- after the "Notes for release" heading, so the rule fences off anything appended below (Cursor Bugbot reviews, later edits) and keeps it out of the changelog.

4. Create the PR

Always create as draft and apply the 🤖 bot label. Do not mark as ready for review until CI passes and the prompter approves.

gh pr create --draft --label "🤖 bot" --title "type(scope): description" --body "$(cat <<'EOF'
### Description

[what and why]

### What to review

[guidance for reviewers]

### Testing

[tests added or manual testing explanation]

### Notes for release

[release notes or N/A]

---
EOF
)"

If the label was omitted at create time:

gh pr edit --add-label "🤖 bot"

After CI is green and the prompter approves, mark ready for review:

gh pr ready

Release notes checklist

  • Written for end users, not internal engineers
  • Includes code snippets for new APIs or changed behavior
  • Mentions breaking changes prominently
  • No unexplained jargon
  • Concise — a paragraph plus code example is ideal

Больше skills от sanity-io

tdd
sanity-io
Разработка через тестирование с циклом «красный-зелёный-рефакторинг». Используется, когда пользователь хочет создавать функции или исправлять ошибки с помощью TDD, упоминает «красный-зелёный-рефакторинг», хочет…
performance-optimization
sanity-io
Оптимизирует производительность приложений. Используйте, когда есть требования к производительности, при подозрении на регрессию производительности, а также при проблемах с Core Web Vitals или временем загрузки…
content-experimentation-best-practices
sanity-io
Структурированное руководство по проектированию, проведению и анализу контент-экспериментов для повышения конверсии и вовлеченности. Охватывает фреймворки гипотез, выбор метрик, расчет размера выборки и проверку статистической значимости в A/B и многофакторных экспериментах. Включает подробные материалы по p-значениям, доверительным интервалам, анализу мощности и байесовским методам интерпретации результатов. Предоставляет шаблоны интеграции с CMS для управления вариантами на уровне полей и подключения внешних...
content-modeling-best-practices
sanity-io
Структурированное руководство по моделированию контента для проектирования схем, повторного использования и многоканальной доставки. Охватывает основные принципы: работа с контентом как с данными, а не страницами, поддержание единых источников истины, проектирование для будущих каналов и оптимизация рабочих процессов редакторов. Включает структуры принятия решений для ссылок и встроенных объектов, разделение ответственности и шаблоны повторного использования контента. Предоставляет рекомендации по таксономии и классификации для плоских, иерархических и фасетных подходов. Применяется к...
portable-text-conversion
sanity-io
Преобразует HTML и Markdown в блоки Portable Text для Sanity. Используется при миграции контента из устаревших CMS, импорте HTML или Markdown в Sanity,…
portable-text-serialization
sanity-io
Рендеринг и сериализация Portable Text в React, Svelte, Vue, Astro, HTML, Markdown и обычный текст. Используйте при реализации рендеринга Portable Text в любом фронтенде…
sanity-best-practices
sanity-io
We need to translate the given English text into Russian, preserving the name "sanity-best-practices" only if it appears in the source text. The source text does not include the name; it's just the description. So we translate the description. We must not add any extra commentary, labels, etc. Just the translation. The text: "Comprehensive best practices and integration guides for Sanity CMS development across frameworks and topics. Covers 10+ framework integrations including Next.js, Nuxt, Astro, Remix, SvelteKit, and Angular with framework-specific patterns and setup guidance Includes topic guides for schema design, GROQ query optimization, Visual Editing, Portable Text, images, TypeGen, localization, and content migrations Provides quick-reference structure for loading only relevant guides based on task type,..." We need to translate accurately, preserving product names (Sanity CMS, Next.js, Nuxt, Astro, Remix, SvelteKit, Angular, GROQ, Visual Editing, Portable Text, TypeGen) and technical terms. Also numbers (10+
sanity-migration
sanity-io
Планирует, выполняет и проверяет миграции из других CMS и систем управления контентом в Sanity. Используйте при миграции или переходе на Sanity из AEM, Adobe Experience Manager, Contentful, Strapi, Webflow, WordPress, Payload, Drupal, файлов Markdown/MDX/frontmatter, экспортов WXR/XML, API CMS, дампов баз данных, статического HTML, а также при проектировании процессов извлечения, трансформации, преобразования в Portable Text, миграции ресурсов, редиректов, валидации и переключения.
data-analysisdatabasedevelopment