rspress-description-generator
Skill1k starsChanged 19 days agoMITView on GitHub
Generate missing description frontmatter for Rspress Markdown/MDX pages, including new docs pages and site-wide SEO metadata updates.
We split this skill into the rules it gives an agent
11 rules. 3 are common, 0 are distinctive, and 8 are very specific to this project.
3
Common
Most of the 3 edited versions we read keep these.
0
Distinctive
This author's own choices. Worth a look.
8
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 13
Read the config and extract the root option.
- Very specific: line 15
If root is set, resolve it relative to the config file's directory.
- Very specific: line 16
If root is not set, default to docs relative to the config file's directory.
- Very specific: line 33
Check if the docs root contains language subdirectories (two-letter codes like en, zh, ja, ko, etc.).
- Common: line 35
If there are no language subdirectories, treat the entire docs root as a single-language site.
- Very specific: line 48
Check for existing
descriptionin frontmatter: If it exists and is non-empty, skip. - Very specific: line 52
If the file has frontmatter with a title field, insert description on the line after title.
- Very specific: line 53
If the file has frontmatter without title, insert description as the first field.
- Common: line 54
If the file has no frontmatter block, add one:
- Common: line 70
If the description contains colons, quotes, or other special YAML characters, wrap in double quotes:
- Very specific: line 80
After processing all files, do a quick scan to ensure no files were missed — re-glob and check for any remaining files without description.
“Common” is measured: kept by at least 6 in 10 of the 3 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
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
- 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 likewebsite/. - Read the config and extract the
rootoption.- 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
rootis set, resolve it relative to the config file's directory. - If
rootis not set, default todocsrelative to the config file's directory.
- The value might be a plain string (
- Confirm the directory exists. If neither
docsnor the configured root exists, check fordocas 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.mdCheck 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:
- Read the file.
- Check for existing
descriptionin frontmatter. If it exists and is non-empty, skip. - Check
pageTypein frontmatter. Forhomepages, derive the description from thehero.text/hero.taglinefields or the features list, not from body content. - Generate a description following the writing guidelines below.
- Insert
descriptioninto frontmatter:- If the file has frontmatter with a
titlefield, insertdescriptionon the line aftertitle. - If the file has frontmatter without
title, insertdescriptionas the first field. If the file has no frontmatter block, add one:
--- description: Your generated description here ---
- If the file has frontmatter with a
YAML formatting
Most descriptions can be bare YAML strings:
description: Step-by-step guide to setting up your first Rspress siteIf the description contains colons, quotes, or other special YAML characters, wrap in double quotes:
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 (
rootoption): https://rspress.rs/api/config/config-basic - Full Rspress docs: https://rspress.rs/llms.txt
Trending
Less talk lately.about the whole repository
Who's talking about web-infra-dev/rslib
- @rspack.dev“🎉 Rslib v0.1 is now public! The goal of Rslib is to create JavaScript libraries in an simple and intuitive …”Bluesky · Nov 21, 2024 · 24 likes
- ruanyf/weekly“【开源自荐】Rslib - JavaScript 软件包构建工具”GitHub · Dec 13, 2024 · 4 reactions
- web-infra-dev/rspack“perf: introduce `ModuleGraphCache` and cache the result of `get_mode` and `determine_export_assignments`”GitHub · Jun 5, 2025 · 3 reactions
- @rspack.dev“Try it out: github.com/web-infra-de...”Bluesky · Feb 11, 2025 · 3 likes
- web-infra-dev/rsbuild“chore(deps): update dependency @rslib/core to v1.0.0-beta.0”GitHub · Jul 16, 2026 · 2 reactions
The biggest 5 of 41 mentions linking to the repository that our crawl found. Each line is their own headline.
See all 41
Talked about on GitHub and Bluesky (41 times).
On GitHub · 39
- Dec 13, 2024【开源自荐】Rslib - JavaScript 软件包构建工具 — ruanyf/weekly4 reactions
- Jun 5, 2025perf: introduce `ModuleGraphCache` and cache the result of `get_mode` and `determine_export_assignments` — web-infra-dev/rspack3 reactions · 5 comments
- Jul 16, 2026chore(deps): update dependency @rslib/core to v1.0.0-beta.0 — web-infra-dev/rsbuild2 reactions · 1 comment
- May 21, 2026chore: restore Renovate workspace scanning — web-infra-dev/rsbuild2 reactions
- Apr 8, 2026chore(deps): update Rslib 0.21.0 — web-infra-dev/rsbuild2 reactions · 1 comment
34 more on GitHub
- Apr 7, 2026feat(create-rsbuild): add rsbuild best practices skill — web-infra-dev/rsbuild2 reactions
- Sep 3, 2025fix: respect to `jsc.output.charset` in swc loader — web-infra-dev/rspack2 reactions · 3 comments
- Jun 7, 2025chore(deps): update @rslib/core to 0.9.2 — web-infra-dev/rsbuild2 reactions · 1 comment
- Oct 30, 2026chore(deps): update dependency @rslib/core to ~1.0.5 — web-infra-dev/rstest1 reaction · 2 comments
- Oct 14, 2026chore(deps): update dependency @rslib/core to ~1.0.3 — web-infra-dev/rstest1 reaction · 2 comments
- Sep 3, 2026chore(deps): upgrade Rslib to 1.0.0 — web-infra-dev/rspack1 reaction · 4 comments
- Sep 3, 2026chore(deps): upgrade Rslib to v1.0.0 — web-infra-dev/rsbuild1 reaction · 1 comment
- Sep 3, 2026chore(deps): update Rslib to v1.0.0 — web-infra-dev/rsdoctor1 reaction · 3 comments
- Sep 3, 2026chore(deps): update Rslib to 1.0.0 — web-infra-dev/rstest1 reaction · 2 comments
- Sep 3, 2026chore(deps): upgrade Rslib to 1.0.0 — rstackjs/rstack-cli1 reaction · 2 comments
- Sep 3, 2026chore: use a tilde range for Rslib — rstackjs/rslib-stackblitz-example1 reaction · 1 comment
- Sep 3, 2026chore(deps): upgrade @rslib/core to 1.0.0 — web-infra-dev/rslint1 reaction
- Sep 3, 2026chore: upgrade Rslib to v1.0.0 — rstackjs/rslib-stackblitz-example1 reaction · 1 comment
- Aug 31, 2026fix(core): restore defineConfig completions — web-infra-dev/rstest1 reaction · 2 comments
- Aug 27, 2026chore(deps): update dependency @rslib/core to v1.0.0-rc.2 — web-infra-dev/rstest1 reaction · 1 comment
- Aug 19, 2026refactor(create-rstack): align library templates with Rslib — rstackjs/rstack-cli1 reaction · 1 comment
- Aug 13, 2026chore(deps): upgrade Rslib to 1.0.0-beta.3 — web-infra-dev/rsbuild1 reaction
- Aug 13, 2026fix(build): disable Rslib createRequire parser — web-infra-dev/rstest1 reaction · 1 comment
- Aug 10, 2026fix(addon-rslib): support configs without lib — rstackjs/storybook-rsbuild1 reaction · 2 comments
- Aug 6, 2026chore(deps): upgrade Rslib to 1.0.0-beta.2 — rstackjs/rstack-cli1 reaction · 1 comment
- Aug 6, 2026chore(deps): upgrade Rslib to v1.0.0-beta.2 — web-infra-dev/rsbuild1 reaction
- Aug 4, 2026chore(build): enable createRequire parser in Rslib builds — web-infra-dev/rspack1 reaction · 3 comments
- Jul 30, 2026chore(ci): speed up Playwright browser setup — web-infra-dev/rsdoctor1 reaction · 1 comment
- Jul 30, 2026chore(ci): use system Chrome for E2E tests — rstackjs/rsbuild-plugin-rsc1 reaction · 1 comment
- Jul 23, 2026chore(deps): upgrade Rslib to 1.0.0-beta.1 — web-infra-dev/rspack1 reaction · 3 comments
- Jul 23, 2026refactor(core): output declaration files to dist — web-infra-dev/rsbuild1 reaction · 1 comment
- Jul 23, 2026chore(deps): upgrade Rslib to 1.0.0-beta.1 — web-infra-dev/rspress1 reaction · 2 comments
- Jul 23, 2026chore(deps): upgrade Rslib to 1.0.0-beta.1 — web-infra-dev/rsbuild1 reaction · 1 comment
- Jul 22, 2026refactor(core/rsbuild): reuse Rsbuild restart lifecycle — web-infra-dev/rspress1 reaction · 7 comments
- Nov 7, 2025Module Federation type issue with @module-federation/rsbuild-plugin — module-federation/core1 reaction · 3 comments
- Sep 3, 2025[Bug]: can't resolve project's tsconfig path correctly — web-infra-dev/rstest0 reactions
- Jun 14, 2025[Bug]: Dead link check does not support index conventions — web-infra-dev/rspress0 reactions
- Nov 20, 2024[Bug]: Abnormal jump positions when click link that contains anchor — web-infra-dev/rspress0 reactions
- Nov 12, 2024[Feature]: Support passing getResolve in external function — web-infra-dev/rspack0 reactions · 1 comment
On Bluesky · 2
- Nov 21, 2024🎉 Rslib v0.1 is now public! The goal of Rslib is to create JavaScript libraries in an simple and intuitive way. It currently supports:… — @rspack.dev24 likes and reposts · 1 reply
- Feb 11, 2025Try it out: github.com/web-infra-de... — @rspack.dev3 likes and reposts
Other versions4 projects use a version of this.
Word for word · 1
- rstackjs/agent-skills★ 97100% same
Edited · 3
- web-infra-dev/rsbuild★ 3.4k100% same
- open-spaced-repetition/ts-fsrs★ 84686% same
- Muromi-Rikka/cc-learn★ 292% same
Wrote their own version · 0
None found.
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository7 other files it gives its agents.
- AGENTS.mdAGENTS.md
- .github/copilot-instructions.mdCopilot instructions
- create-draft-release-notesSkill
- pr-creatorSkill
- releaseSkill
- rstack-cli-docsSkill
- rstack-docs-writerSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

