К основному содержанию
скилл CX Codex

rspress-description-generator — скилл для Claude Code: описания

Скилл дописывает поле description во frontmatter страниц Rspress, если его там нет. Пригодится, когда документация уже большая, а метаописания заполнены вручную через одну.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add rstackjs/agent-skills --skill rspress-description-generator -a claude-code
Открыть на GitHub

Что делает rspress-description-generator

Скилл ищет файлы **/*.md и **/*.mdx в корне документации и проверяет frontmatter каждой страницы. Если description уже есть и не пустой, файл пропускается. Если поля нет, скилл читает содержимое страницы и пишет описание сам: 50–160 символов, без markdown, на языке документа. Для страниц с pageType: home текст берётся из hero.text, hero.tagline или списка фич, а не из тела.

Сначала скилл находит конфиг Rspress (rspress.config.ts, .js, .mjs или .cjs) и достаёт из него опцию root. Если root не задан, по умолчанию берётся папка docs рядом с конфигом. Дальше проверяется структура i18n: подкаталоги вида en/, zh/ обрабатываются отдельно, чтобы описание совпадало с языком контента. При вставке поля скилл ставит description после title, а если блока frontmatter нет — создаёт его. Значения с двоеточиями и кавычками оборачиваются в двойные кавычки, иначе YAML сломается.

Из выборки исключаются node_modules, каталоги сборки (doc_build, .rspress, dist), файлы _meta.json и _nav.json, а также папки **/shared/** — это сниппеты, а не отдельные страницы. На больших сайтах скилл советует параллельные вызовы агента с группировкой по каталогам, а после прохода — повторный обход, чтобы найти пропущенное.

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

  • заполнить description для сотен страниц документации
  • обновить SEO-метаданные по всему сайту Rspress
  • добавить frontmatter в новый md-файл без него
  • развести описания по языковым каталогам en и zh
  • не трогать страницы, где описание уже написано

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

  • пройди по документации Rspress и допиши description там, где его нет
  • обнови метаописания для всех страниц в docs/guide
  • проверь, у каких страниц в docs всё ещё нет description

Как установить rspress-description-generator

1Через Skills CLI (Vercel)

npx skills add rstackjs/agent-skills --skill rspress-description-generator -a claude-code

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

~/.claude/skills/rspress-description-generator/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/rspress-description-generator/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о rspress-description-generator

Как установить rspress-description-generator в Claude?

Выполните npx skills add rstackjs/agent-skills --skill rspress-description-generator -a claude-code. После этого файл скилла окажется в ~/.claude/skills/rspress-description-generator/SKILL.md.

Что делает rspress-description-generator?

Генерирует отсутствующие описания во frontmatter страниц Rspress и вставляет их в нужное место блока. Заодно пропускает файлы, где description уже заполнен.

Как скилл определяет корень документации?

Читает опцию root в конфиге Rspress. Если её нет, берёт папку docs рядом с конфигом, а при её отсутствии проверяет doc.

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

SKILL.md · MIT
---
name: rspress-description-generator
description: Generate missing description frontmatter for Rspress Markdown/MDX pages, including new docs pages and site-wide SEO metadata updates.
---

# Rspress description generator

The `description` field in Rspress frontmatter generates `<meta name="description" content="...">` tags, which are used for search engine snippets, social media previews, and AI-oriented formats like llms.txt.

## Step 1 — locate the docs root

1. Find the Rspress config file. Search for `rspress.config.ts`, `.js`, `.mjs`, or `.cjs`. It may be at the project root or inside a subdirectory like `website/`.
2. Read the config and extract the `root` option.
   - The value might be a plain string (`root: 'docs'`) or a JS expression (`root: path.join(__dirname, 'docs')`). In either case, determine the resolved directory path.
   - If `root` is set, resolve it relative to the config file's directory.
   - If `root` is not set, default to `docs` relative to the config file's directory.
3. Confirm the directory exists. If neither `docs` nor the configured root exists, check for `doc` as a fallback.

## Step 2 — detect i18n structure

Rspress i18n projects place language subdirectories (e.g., `en/`, `zh/`) directly under the docs root:

```
docs/
├── en/
│   ├── guide/
│   └── index.md
└── zh/
    ├── guide/
    └── index.md
```

Check if the docs root contains language subdirectories (two-letter codes like `en`, `zh`, `ja`, `ko`, etc.). If so, process each language directory separately — the description language should match the content language.

If there are no language subdirectories, treat the entire docs root as a single-language site.

## Step 3 — scan and process files

Glob for `**/*.md` and `**/*.mdx` under the docs root. Exclude:

- `node_modules`, build output (`doc_build`, `.rspress`, `dist`)
- `_meta.json` / `_nav.json` (sidebar/nav config files, not doc pages)
- `**/shared/**` directories (reusable snippets included via `@import`, not standalone pages)

For each file:

1. **Read the file.**
2. **Check for existing `description` in frontmatter.** If it exists and is non-empty, skip.
3. **Check `pageType` in frontmatter.** For `home` pages, derive the description from the `hero.text` / `hero.tagline` fields or the features list, not from body content.
4. **Generate a description** following the writing guidelines below.
5. **Insert `description` into frontmatter:**
   - If the file has frontmatter with a `title` field, insert `description` on the line after `title`.
   - If the file has frontmatter without `title`, insert `description` as the first field.
   - If the file has no frontmatter block, add one:

     ```yaml
     ---
     description: Your generated description here
     ---
     ```

### YAML formatting

Most descriptions can be bare YAML strings:

```yaml
description: Step-by-step guide to setting up your first Rspress site
```

If the description contains colons, quotes, or other special YAML characters, wrap in double quotes:

```yaml
description: 'API reference for Rspress configuration: plugins, themes, and build options'
```

## Step 4 — batch processing

For sites with many files, use parallel agent calls to process independent files simultaneously. Group by directory (e.g., all files in `guide/`, then all in `api/`) to maintain focus and consistency within each section.

After processing all files, do a quick scan to ensure no files were missed — re-glob and check for any remaining files without `description`.

## Description writing guidelines

The description serves three audiences: search engines (Google snippet), AI systems (llms.txt, summarization), and humans (scanning search results). A good description helps all three.

### Rules

- **Length**: 50–160 characters. Under 50 is too vague for search engines; over 160 gets truncated in snippets.
- **Language**: Match the document content. Chinese docs get Chinese descriptions, English docs get English descriptions.
- **Be direct**: State what the page covers. Avoid starting with "This document", "This page", "Learn about" — jump straight to the substance.
- **Be specific**: Mention concrete technologies, APIs, or concepts the page covers. "Configure Rspress plugins for search, analytics, and internationalization" beats "How to use plugins."
- **No markdown**: Plain text only, no formatting syntax.

### Examples

**Good:**

| Content                    | Description                                                                  |
| -------------------------- | ---------------------------------------------------------------------------- |
| Plugin development guide   | Create custom Rspress plugins using the Node.js plugin API and runtime hooks |
| MDX component usage        | Import and use React components in MDX documentation files                   |
| Rspress 快速开始           | 从安装到本地预览,搭建 Rspress 文档站点的完整流程                            |
| 主题配置                   | 自定义 Rspress 主题的导航栏、侧边栏、页脚和暗色模式                          |
| Home page (pageType: home) | Rspress documentation framework — fast, MDX-powered static site generator    |

**Bad:**

| Description                                             | Why                                              |
| ------------------------------------------------------- | ------------------------------------------------ |
| "About plugins"                                         | Too vague — which plugins? what about them?      |
| "This page explains how to configure the Rspress theme" | Wastes characters on "This page explains how to" |
| "Learn everything about Rspress!"                       | Marketing fluff, says nothing specific           |

## Documentation

- Frontmatter fields: <https://rspress.rs/api/config/config-frontmatter>
- Basic config (`root` option): <https://rspress.rs/api/config/config-basic>
- Full Rspress docs: <https://rspress.rs/llms.txt>

© rstackjs · MIT · rstackjs/agent-skills

Похожие скиллы

Всё по теме «Тексты и документация» →
blog-write AgriciDaniel Пишет новую статью в блог с нуля: подбирает шаблон, расставляет факты со ссылками, собирает графики и FAQ. Полезен, когда нужен готовый черновик, а не план. CX Codex +1 2 500установок blog-rewrite AgriciDaniel Аудирует и переписывает статьи в MDX, Markdown или HTML под требования Google и поискового ИИ. Помогает заменить сомнительные данные ссылками на исследования. CX Codex +1 2 500установок docs-write metabase Скилл помогает писать и редактировать Markdown и MDX в стиле Metabase. Он пригодится для рабочих инструкций, описаний функций и другой документации. CX Codex +1 2 100установок meta-description kostja94 Скилл для написания, аудита и оптимизации мета-описаний. Пригодится, когда надо собрать сниппет для конкретной страницы, а не переписать шаблон по всему сайту. CX Codex +1 1 200установок embodiment-description wanshuiyin Составляет подробные варианты осуществления изобретения для патентных заявок. Пригодится, когда нужно описать конструкцию и шаги метода без академических тестов. CX Codex +1 461установок mintlify Mintlify Скилл-справочник по Mintlify: помогает агенту писать страницы, настраивать docs.json и собирать навигацию. CX Codex +1 1 700установок

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

rsbuild-best-practices Задаёт правила настройки, проверки и отладки сборщика Rsbuild. Помогает настроить конфиг, оптимизировать бандл и выявить узкие места при компиляции. CX Codex +1 2 700установок rstest-best-practices Правила настройки и написания тестов Rstest: окружения, моки, снапшоты, покрытие и CI. Пригодится, когда проект переезжает на Rstest или тесты уже есть, но разъехались по стилю. CX Codex +1 1 400установок rslib-best-practices Скилл обучает агента правилам сборки библиотек на Rslib. Пригодится при настройке rslib.config.ts, разделении зависимостей и выводе деклараций. CX Codex +1 1 000установок rspress-best-practices Скилл задаёт агенту правила для сайтов на Rspress v2: конфигурация, навигация, MDX, ассеты, поиск и деплой. Пригодится, когда документация уже есть, а агент пишет по ней код. CX Codex +1 538установок rspack-v2-upgrade Ведёт проект с Rspack 1.x через переход на вторую версию: зависимости, конфиг, проверка сборки. Пригодится, когда мажорный апгрейд страшно начинать вручную. CX Codex +1 515установок rsbuild-v2-upgrade Проводит проект с Rsbuild 1.x через миграцию на v2: зависимости, конфиг, сломанные опции. Пригодится, когда мажорное обновление иначе растянется на вечер. CX Codex +1 476установок migrate-to-rstest Переносит тесты из Jest, Vitest или Playwright Test в Rstest, сохраняя обнаружение, ассерты, моки, снапшоты и покрытие. Пригодится, когда надо переехать без переписывания сценариев. CX Codex +1 420установок rspress-custom-theme Скилл подсказывает агенту, как менять тему Rspress v2: от CSS-переменных до замены встроенных компонентов. CX Codex +1 408установок

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

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