Markdown Article Formatter
JimLiu/baoyu-skills
Reformats plain text or Markdown articles with frontmatter, a title, a summary, headings, bold, lists and code blocks, and saves a separate formatted copy.
Comprehensive MDX component patterns (Note, Pitfall, DeepDive, Recipes, etc.) for all documentation types.
$ npx skills add reactjs/ar.react.dev --skill docs-components -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install reactjs/ar.react.dev docs-components --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/reactjs/ar.react.dev.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/docs-components .claude/skills/docs-components && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "docs-components" agent skill from https://github.com/reactjs/ar.react.dev/tree/main/.claude/skills/docs-components into .claude/skills/docs-components/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "docs-components", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/reactjs/ar.react.dev/tree/main/.claude/skills/docs-componentsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add reactjs/ar.react.dev --skill docs-components -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install reactjs/ar.react.dev docs-components --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/reactjs/ar.react.dev.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/docs-components .agents/skills/docs-components && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "docs-components" agent skill from https://github.com/reactjs/ar.react.dev/tree/main/.claude/skills/docs-components into .agents/skills/docs-components/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "docs-components", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add reactjs/ar.react.dev --skill docs-components -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install reactjs/ar.react.dev docs-components --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/reactjs/ar.react.dev.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/docs-components .cursor/skills/docs-components && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "docs-components" agent skill from https://github.com/reactjs/ar.react.dev/tree/main/.claude/skills/docs-components into .cursor/skills/docs-components/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "docs-components", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/reactjs/ar.react.dev.git --path .claude/skills/docs-components--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add reactjs/ar.react.dev --skill docs-components -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install reactjs/ar.react.dev docs-components --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/reactjs/ar.react.dev.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/docs-components .gemini/skills/docs-components && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "docs-components" agent skill from https://github.com/reactjs/ar.react.dev/tree/main/.claude/skills/docs-components into .gemini/skills/docs-components/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "docs-components", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install reactjs/ar.react.dev docs-componentsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add reactjs/ar.react.dev --skill docs-components -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/reactjs/ar.react.dev.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/docs-components .github/skills/docs-components && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "docs-components" agent skill from https://github.com/reactjs/ar.react.dev/tree/main/.claude/skills/docs-components into .github/skills/docs-components/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "docs-components", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add reactjs/ar.react.dev --skill docs-components -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install reactjs/ar.react.dev docs-components --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/reactjs/ar.react.dev.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/docs-components .opencode/skills/docs-components && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "docs-components" agent skill from https://github.com/reactjs/ar.react.dev/tree/main/.claude/skills/docs-components into .opencode/skills/docs-components/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "docs-components", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
docs-componentsComprehensive MDX component patterns (Note, Pitfall, DeepDive, Recipes, etc.) for all documentation types.
Docs Components is an agent skill from reactjs/ar.react.dev, published by the product's own GitHub organization. Comprehensive MDX component patterns (Note, Pitfall, DeepDive, Recipes, etc.) for all documentation types. Authoritative source for component usage, examples, and heading conventions.
Its SKILL.md is about 3k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Documents & Office, covering Markdown and Deployment. The repository describes itself as: React documentation website in Arabic 📘⚛️ — وثائق React باللغة العربية. The licence is CC-BY-4.0.
Read from SKILL.md and the folder at commit 2da48d6. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are mdx).
From the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
en.wikipedia.orgFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Docs Components loads about 3k tokens when it runs. Until then it costs about 50 tokens; SKILL.md has 629 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from reactjs/ar.react.dev at commit 2da48d6, republished under its CC-BY-4.0 licence (© reactjs). 629 words, ~2,960 tokens.
.claude/skills/docs-components/SKILL.md (or your agent's skills folder).| Need | Component |
|---|---|
| Helpful tip or terminology | <Note> |
| Common mistake warning | <Pitfall> |
| Advanced technical explanation | <DeepDive> |
| Canary-only feature | <Canary> or <CanaryBadge /> |
| Server Components only | <RSC> |
| Deprecated API | <Deprecated> |
| Experimental/WIP | <Wip> |
| Visual diagram | <Diagram> |
| Multiple related examples | <Recipes> |
| Interactive code | <Sandpack> (see /docs-sandpack) |
| Console error display | <ConsoleBlock> |
| End-of-page exercises | <Challenges> (Learn pages only) |
| Component | Heading Level |
|---|---|
| DeepDive title | #### (h4) |
| Titled Pitfall | ##### (h5) |
| Titled Note | #### (h4) |
| Recipe items | #### (h4) |
| Challenge items | #### (h4) |
Callout components (Note, Pitfall, DeepDive) require a blank line after the opening tag before content begins.
Never place consecutively:
<Pitfall> followed by <Pitfall> - Combine into one with titled subsections, or separate with prose<Note> followed by <Note> - Combine into one, or separate with proseAllowed consecutive patterns:
<DeepDive> followed by <DeepDive> - OK for multi-part explorations (see useMemo.md)<Pitfall> followed by <DeepDive> - OK when DeepDive explains "why" behind the PitfallSeparation content: Prose paragraphs, code examples (Sandpack), or section headers.
Why: Consecutive warnings create a "wall of cautions" that overwhelms readers and causes important warnings to be skimmed.
Incorrect:
<Pitfall>
Don't do X.
</Pitfall>
<Pitfall>
Don't do Y.
</Pitfall>Correct - combined:
<Pitfall>
##### Don't do X {/*pitfall-x*/}
Explanation.
##### Don't do Y {/*pitfall-y*/}
Explanation.
</Pitfall>Correct - separated:
<Pitfall>
Don't do X.
</Pitfall>
This leads to another common mistake:
<Pitfall>
Don't do Y.
</Pitfall><Note>Important clarifications, conventions, or tips. Less severe than Pitfall.
<Note>
The optimization of caching return values is known as [_memoization_](https://en.wikipedia.org/wiki/Memoization).
</Note>Use #### (h4) heading with an ID.
<Note>
#### There is no directive for Server Components. {/*no-directive*/}
A common misunderstanding is that Server Components are denoted by `"use server"`, but there is no directive for Server Components. The `"use server"` directive is for Server Functions.
</Note><Note>
Starting in React 19, you can render `<SomeContext>` as a provider.
In older versions of React, use `<SomeContext.Provider>`.
</Note><Pitfall>Common mistakes that cause bugs. Use for errors readers will likely make.
<Pitfall>
We recommend defining components as functions instead of classes. [See how to migrate.](#alternatives)
</Pitfall>Use ##### (h5) heading with an ID.
<Pitfall>
##### Calling different memoized functions will read from different caches. {/*pitfall-different-caches*/}
To access the same cache, components must call the same memoized function.
</Pitfall><Pitfall>
##### `useFormStatus` will not return status information for a `<form>` rendered in the same component. {/*pitfall-same-component*/}
```js
function Form() {
// 🔴 `pending` will never be true
const { pending } = useFormStatus();
return <form action={submit}></form>;
}Instead call useFormStatus from inside a component located inside <form>.
</Pitfall>
```
<DeepDive>Optional deep technical content. First child must be #### heading with ID.
<DeepDive>
#### Is using an updater always preferred? {/*is-updater-preferred*/}
You might hear a recommendation to always write code like `setAge(a => a + 1)` if the state you're setting is calculated from the previous state. There's no harm in it, but it's also not always necessary.
In most cases, there is no difference between these two approaches. React always makes sure that for intentional user actions, like clicks, the `age` state variable would be updated before the next click.
</DeepDive>For comparing related concepts:
<DeepDive>
#### When should I use `cache`, `memo`, or `useMemo`? {/*cache-memo-usememo*/}
All mentioned APIs offer memoization but differ in what they memoize, who can access the cache, and when their cache is invalidated.
#### `useMemo` {/*deep-dive-usememo*/}
In general, you should use `useMemo` for caching expensive computations in Client Components across renders.
#### `cache` {/*deep-dive-cache*/}
In general, you should use `cache` in Server Components to memoize work that can be shared across components.
</DeepDive><Recipes>Multiple related examples showing variations. Each recipe needs <Solution />.
<Recipes titleText="Basic useState examples" titleId="examples-basic">
#### Counter (number) {/*counter-number*/}
In this example, the `count` state variable holds a number.
<Sandpack>
{/* code */}
</Sandpack>
<Solution />
#### Text field (string) {/*text-field-string*/}
In this example, the `text` state variable holds a string.
<Sandpack>
{/* code */}
</Sandpack>
<Solution />
</Recipes>Common titleText/titleId combinations:
examples-basicexamples-[concept]examples-[topic]<Challenges>End-of-page exercises. Learn pages only. Each challenge needs problem + solution Sandpack.
<Challenges>
#### Fix the bug {/*fix-the-bug*/}
Problem description...
<Hint>
Optional hint text.
</Hint>
<Sandpack>
{/* problem code */}
</Sandpack>
<Solution>
Explanation...
<Sandpack>
{/* solution code */}
</Sandpack>
</Solution>
</Challenges>Guidelines:
#### heading with ID<Deprecated>For deprecated APIs. Content should explain what to use instead.
<Deprecated>
In React 19, `forwardRef` is no longer necessary. Pass `ref` as a prop instead.
`forwardRef` will be deprecated in a future release. Learn more [here](/blog/2024/04/25/react-19#ref-as-a-prop).
</Deprecated>### `componentWillMount()` {/*componentwillmount*/}
<Deprecated>
This API has been renamed from `componentWillMount` to [`UNSAFE_componentWillMount`.](#unsafe_componentwillmount)
Run the [`rename-unsafe-lifecycles` codemod](codemod-link) to automatically update.
</Deprecated><RSC>For APIs that only work with React Server Components.
<RSC>
`cache` is only for use with [React Server Components](/reference/rsc/server-components).
</RSC><RSC>
Server Functions are for use in [React Server Components](/reference/rsc/server-components).
**Note:** Until September 2024, we referred to all Server Functions as "Server Actions".
</RSC><Canary> and <CanaryBadge />For features only available in Canary releases.
<Intro>
`<Fragment>` lets you group elements without a wrapper node.
<Canary>Fragments can also accept refs, enabling interaction with underlying DOM nodes.</Canary>
</Intro>### <CanaryBadge /> FragmentInstance {/*fragmentinstance*/}* <CanaryBadge /> **optional** `ref`: A ref object from `useRef` or callback function.* <CanaryBadge /> If you want to pass `ref` to a Fragment, you can't use the `<>...</>` syntax.<Diagram>Visual explanations of module dependencies, render trees, or data flow.
<Diagram name="use_client_module_dependency" height={250} width={545} alt="A tree graph with the top node representing the module 'App.js'. 'App.js' has three children...">
`'use client'` segments the module dependency tree, marking `InspirationGenerator.js` and all dependencies as client-rendered.
</Diagram>Attributes:
name: Diagram identifier (used for image file)height: Height in pixelswidth: Width in pixelsalt: Accessible description of the diagram<CodeStep> (Use Sparingly)Numbered callouts in prose. Pairs with code block annotations.
In code blocks:
```js [[1, 4, "age"], [2, 4, "setAge"], [3, 4, "42"]]
import { useState } from 'react';
function MyComponent() {
const [age, setAge] = useState(42);
}
Format: `[[step_number, line_number, "text_to_highlight"], ...]`
In prose:
```mdx
1. The <CodeStep step={1}>current state</CodeStep> initially set to the <CodeStep step={3}>initial value</CodeStep>.
2. The <CodeStep step={2}>`set` function</CodeStep> that lets you change it.✅ Good use - highlighting key concepts:
React will compare the <CodeStep step={2}>dependencies</CodeStep> with the dependencies you passed...🚫 Avoid - excessive highlighting:
When an <CodeStep step={1}>Activity</CodeStep> boundary is <CodeStep step={2}>hidden</CodeStep> during its <CodeStep step={3}>initial</CodeStep> render...<ConsoleBlock>Display console output (errors, warnings, logs).
<ConsoleBlock level="error">
Uncaught Error: Too many re-renders.
</ConsoleBlock>Levels: error, warning, info
For component placement rules specific to Reference pages, invoke /docs-writer-reference.
Key placement patterns:
<RSC> goes before <Intro> at top of page<Deprecated> goes after <Intro> for page-level deprecation<Deprecated> goes after method heading for method-level deprecation<Canary> wrapper goes inline within <Intro><CanaryBadge /> appears in headings, props lists, and caveatsFor Learn page structure and patterns, invoke /docs-writer-learn.
Key usage patterns:
For Blog page structure and patterns, invoke /docs-writer-blog.
Key usage patterns:
Version/Status: <Experimental>, <ExperimentalBadge />, <RSCBadge />, <NextMajor>, <Wip>
Visuals: <DiagramGroup>, <Illustration>, <IllustrationBlock>, <CodeDiagram>, <FullWidth>
Console: <ConsoleBlockMulti>, <ConsoleLogLine>
Specialized: <TerminalBlock>, <BlogCard>, <TeamMember>, <YouTubeIframe>, <ErrorDecoder />, <LearnMore>, <Math>, <MathI>, <LanguageList>
See existing docs for usage examples of these components.
© reactjs, CC-BY-4.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .claude/skills/docs-components of reactjs/ar.react.dev.
Open the folder on GitHubat commit 2da48d6
We found 3 copies of this SKILL.md (exact, near-identical or edited) in other folders. This page covers the copy in reactjs/ar.react.dev, which our catalogue first saw on October 7, 2026.
Docs Components next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Docs Components this skillreactjs/ar.react.dev | 164 | — | ~3k | Automated safety check: Pass | CC-BY-4.0 | |
| Markdown Article FormatterJimLiu/baoyu-skills | 26k | 7 repos | ~3.5k | Automated safety check: Pass | MIT | |
| MarkitdownImCa0/just-laws | 781 | 14 repos | ~3.2k | Automated safety check: Notes | MIT | |
| Obsidian MarkdownAtmosphere/atmosphere | 3.8k | 20 repos | ~1.3k | Automated safety check: Pass | Apache-2.0 | |
| Gzh Designisjiamu/gzh-design-skill | 3.9k | 1 repos | ~2.2k | Automated safety check: Pass | AGPL-3.0 | |
| Crosspostingwasp-lang/wasp | 19k | — | ~1.1k | Automated safety check: Pass | MIT |
JimLiu/baoyu-skills
Reformats plain text or Markdown articles with frontmatter, a title, a summary, headings, bold, lists and code blocks, and saves a separate formatted copy.
ImCa0/just-laws
Convert files and office documents to Markdown. An agent skill from ImCa0/just-laws.
Atmosphere/atmosphere
Create and edit Obsidian Flavored Markdown with wikilinks, embeds, callouts, properties, and other Obsidian-specific syntax.
isjiamu/gzh-design-skill
微信公众号文章排版引擎,将 Markdown 转换为可直接粘贴到公众号编辑器的 HTML。主题风格从 references/theme-index.md 注册的自定义主题库中选取,自动章节编号、关键词下划线标记、引言卡片、目录导航、代码块、图片/GIF、作者签名。支持 Markdown / Word(.docx) / PDF / 纯文本输入(非 Markdown…
wasp-lang/wasp
Crosspost Wasp blog articles (MDX) to DEV.to and Medium. An agent skill from wasp-lang/wasp.
supabase/supabase
Review Supabase docs changes locally in your supabase/supabase checkout — either an open PR (triage, classify, verify) or your own branch before opening a PR (local self-review).
reactjs/ar.react.dev
A skill your agent uses when researching React APIs or concepts for documentation.
reactjs/ar.react.dev
A skill your agent uses when adding interactive RSC (React Server Components) code examples to React docs using <SandpackRSC, or when modifying the RSC sandpack infrastructure.
reactjs/ar.react.dev
A skill your agent uses when writing any React documentation.
reactjs/ar.react.dev
A skill your agent uses when writing or editing files in src/content/blog/.
reactjs/ar.react.dev
A skill your agent uses when writing or editing files in src/content/learn/.
reactjs/ar.react.dev
A skill your agent uses when creating new React documentation pages or updating existing ones.
Categories
Comprehensive MDX component patterns (Note, Pitfall, DeepDive, Recipes, etc.) for all documentation types. dev, published by the product's own GitHub organization.) for all documentation types.
Docs Components fits situations like: tasks that involve Markdown; tasks that involve Deployment.
Run `npx skills add reactjs/ar.react.dev --skill docs-components -a claude-code`. Or copy the skill folder (.claude/skills/docs-components in reactjs/ar.react.dev) into .claude/skills/docs-components in your project. Claude Code loads it when a task matches its description.
Run `npx skills add reactjs/ar.react.dev --skill docs-components -a codex`. Or copy the skill folder (.claude/skills/docs-components in reactjs/ar.react.dev) into .agents/skills/docs-components in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add reactjs/ar.react.dev --skill docs-components -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/docs-components, .gemini/skills/docs-components, .github/skills/docs-components and .opencode/skills/docs-components in your project.
SKILL.md names no scripts, command-line tools or credentials: Docs Components is instructions for the agent only.
SKILL.md names 1 domain. In commands or code: en.wikipedia.org; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Docs Components is published under the CC-BY-4.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Docs Components: Markdown Article Formatter (JimLiu/baoyu-skills, 26k stars), Markitdown (ImCa0/just-laws, 781 stars), Obsidian Markdown (Atmosphere/atmosphere, 3.8k stars) and Gzh Design (isjiamu/gzh-design-skill, 3.9k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
reactjs (a GitHub organization, an official publisher) maintains it in reactjs/ar.react.dev, which has 164 GitHub stars. The repository holds 10 skills in this directory. The repository was last updated on October 5, 2026.
Source: reactjs/ar.react.dev on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.