Chatbot Mvp Distillation
pdsuwwz/chatgpt-vue3-light-mvp
Distill the chatgpt-vue3-light-mvp project into reusable architecture for building similar ChatGPT-style web products in other repositories.
Draw diagrams for the Next.js docs in the style of the ones already published there: the light/dark PNGs an mdx references with <Image srcLight="/docs/light/<name.png" srcDark="/docs/dark/<name.png".
$ npx skills add vercel/next.js --skill docs-diagrams -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install vercel/next.js docs-diagrams --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/vercel/next.js.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/docs-diagrams .claude/skills/docs-diagrams && 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-diagrams" agent skill from https://github.com/vercel/next.js/tree/canary/.agents/skills/docs-diagrams into .claude/skills/docs-diagrams/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "docs-diagrams", 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/vercel/next.js/tree/canary/.agents/skills/docs-diagramsType 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 vercel/next.js --skill docs-diagrams -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install vercel/next.js docs-diagrams --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/vercel/next.js.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/docs-diagrams .agents/skills/docs-diagrams && 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-diagrams" agent skill from https://github.com/vercel/next.js/tree/canary/.agents/skills/docs-diagrams into .agents/skills/docs-diagrams/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "docs-diagrams", 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 vercel/next.js --skill docs-diagrams -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install vercel/next.js docs-diagrams --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/vercel/next.js.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/docs-diagrams .cursor/skills/docs-diagrams && 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-diagrams" agent skill from https://github.com/vercel/next.js/tree/canary/.agents/skills/docs-diagrams into .cursor/skills/docs-diagrams/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "docs-diagrams", 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/vercel/next.js.git --path .agents/skills/docs-diagrams--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 vercel/next.js --skill docs-diagrams -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install vercel/next.js docs-diagrams --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/vercel/next.js.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/docs-diagrams .gemini/skills/docs-diagrams && 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-diagrams" agent skill from https://github.com/vercel/next.js/tree/canary/.agents/skills/docs-diagrams into .gemini/skills/docs-diagrams/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "docs-diagrams", 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 vercel/next.js docs-diagramsInstalls 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 vercel/next.js --skill docs-diagrams -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/vercel/next.js.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/docs-diagrams .github/skills/docs-diagrams && 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-diagrams" agent skill from https://github.com/vercel/next.js/tree/canary/.agents/skills/docs-diagrams into .github/skills/docs-diagrams/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "docs-diagrams", 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 vercel/next.js --skill docs-diagrams -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install vercel/next.js docs-diagrams --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/vercel/next.js.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/docs-diagrams .opencode/skills/docs-diagrams && 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-diagrams" agent skill from https://github.com/vercel/next.js/tree/canary/.agents/skills/docs-diagrams into .opencode/skills/docs-diagrams/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "docs-diagrams", 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-diagramsDraw diagrams for the Next.js docs in the style of the ones already published there: the light/dark PNGs an mdx references with <Image srcLight="/docs/light/<name.png" srcDark="/docs/dark/<name.png".
Docs Diagrams is an agent skill from vercel/next.js, published by the product's own GitHub organization. Draw diagrams for the Next.js docs in the style of the ones already published there: the light/dark PNGs an mdx references with <Image srcLight="/docs/light/<name.png" srcDark="/docs/dark/<name.png". Use when a guide or API reference needs a new diagram or an existing one needs a change. Hand-written SVG from a primitives library, rendered by headless Chrome at 2x. No AI image generation.
Its SKILL.md is about 2.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 7 other files, including scripts (for example `review-checklist.md`, `scripts/measure.py` and `scripts/render.sh`).
It sits in Development, covering Diagrams, Markdown and Image generation. It works with Next.js. The licence is MIT.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit a32ddfd. 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.
Ships 4 files in scripts/ (JavaScript, Python and Shell), which the agent can run.
Shell commands in SKILL.md call:
nodecurlpython3From 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:
h8dxkfmaphn8o0p3.public.blob.vercel-storage.comAlso links to:
nextjs.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 Diagrams loads about 2.9k tokens when it runs. Until then it costs about 103 tokens; SKILL.md has 1,512 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); the scripts in this folder are not scanned.
The full file from vercel/next.js at commit a32ddfd, republished under its MIT licence (© vercel). 1,512 words, ~2,866 tokens.
.claude/skills/docs-diagrams/SKILL.md (or your agent's skills folder). This skill also uses 6 other files; get the full folder from GitHub.Use the diagrams already published in the docs as references. They share a faint grid background, bordered panels with soft shadows, gray skeleton UI, gray arrows, and a small accent palette in which each color has a consistent meaning. This skill reproduces that visual language from code.
| Task | Read |
|---|---|
| Colors, sizes, fonts, what each color means, shape anatomy | style-tokens.md |
| Reviewing a render before handing it off | review-checklist.md |
| Primitives: canvas, panels, tree rows, windows, holes, badges | scripts/lib.mjs |
| Generate SVG + HTML for every diagram module | scripts/gen.mjs |
| Screenshot light + dark PNGs at 2x | scripts/render.sh |
| Measure a render's margins from the ink | scripts/measure.py |
The <Image> block gives you the file names (srcLight="/docs/light/<name>.png"), the width and height the page reserves, and the alt text, which is the brief.
The paragraph before the image often states the color legend in words ("gray marks static output and blue marks content that can render at request time"). When it does, the drawing has to match that sentence exactly. When it does not, take the states the alt text names (a Suspense fallback, request-time content), map them with "What the colors mean" in style-tokens.md, and suggest adding the legend sentence to the mdx in your hand-off.
Draw only what the brief names. The alt text and surrounding paragraph determine which values, rows, and labels appear. Use the labels from the alt text and docs/01-app/04-glossary.mdx for terminology the brief leaves open.
The images are not in this repo; they are served from the docs blob store. List what exists and fetch two or three that explain something similar, in both themes, before drawing:
grep -rhoE 'srcLight="[^"]+"' docs | sort -u
curl -sL -o ref.png "https://h8DxKfmAPhn8O0p3.public.blob.vercel-storage.com/docs/light/nested-layouts.png"Use the full srcLight path: most images live under /docs/, some under /learn/. Swap light for dark for the dark variant. If the page you are drawing for already has images, those are the first references. Look at more than one: the anatomy is consistent, and you want the shared parts rather than one image's quirks. Published files are a mix of 1x and 2x; that is history, not a target. Always produce 2x.
Copy scripts/ into a scratch folder outside the repo and add diagrams/<name>.mjs:
export default {
name: 'my-diagram', // must equal the mdx srcLight basename
width: 1600, // what the mdx declares
height: 700,
draw(t, lib, { width, height }) {
const k = width / 1600
const s = []
// compose lib primitives here, laid out from a few named constants
return s.join('\n')
},
}lib.mjs has the shapes the docs are built from:
panel, treePanel, urlPill, urlStack, codePanel.arrow, bracketArrow, bracketCaption, callout.browserWindow(t, x, y, w, h, url, body = '') for the frame, pageLayout for the page inside it, postCard and commentRows for the content, skel.* for single placeholders. Pass the URL and body as positional arguments.hole (not rendered yet), card (rendered or highlighted), grid (columns and spans for bars).badge, statusBadge, legendRow, swatchLegend.label, code, textWidth for sizing a block around a label, and the icons.Build a window's page with pageLayout rather than placing skeleton atoms by hand. It carries the spacing that makes placeholders read as a page, and returns regions.post and regions.comments for the usual split of the content column.
When the brief describes moments or stages (before and after, Shell → Prefetch → Navigation), the docs show them as a row of browser windows with arrows between them, each window showing the page at that moment. Content that has rendered at one moment stays rendered, in the same style, in every later moment. When values or APIs need comparing across the moments, bar rows go underneath, split at the gaps between the windows. grid lays out those bars; its column headers sit under the windows and double as their captions (the comment on grid says how to line the two up). Use grid on its own when windows would add nothing.
Lay the block out from named constants and center it on the canvas. When a diagram needs a shape lib does not have, add it to lib.mjs using the existing tokens, in the same style, so the next diagram gets it too. Never hard-code a color or a one-off offset inside a shape.
A module may export an array of diagrams when several share a drawing. Helper modules without a default export are skipped.
Run ./render.sh from inside the scratch folder. It runs node gen.mjs and screenshots each <name>-<theme>.html with headless Chrome at --force-device-scale-factor=2. Output lands in light/<name>.png and dark/<name>.png, the names the mdx expects. node gen.mjs <name> regenerates one diagram while iterating.
The script defaults to the macOS Google Chrome path. On Linux, Windows, or a machine with Chrome installed elsewhere, set CHROME to the browser executable:
CHROME=/path/to/chrome ./render.shLook at both PNGs at full size, against review-checklist.md and against the references from step 2. Run python3 scripts/measure.py light/<name>.png for the margins. Fix in constants and re-render. Do not hand off a PNG you have not looked at.
Deliver the PNGs with their pixel dimensions and the mdx path each one matches. Uploading to the blob store is a manual step by the docs maintainer, so the PNGs are the deliverable, not a commit. Check that the mdx srcLight basename and the PNG name agree, including singular vs plural. If you added a primitive to lib.mjs, commit it back into this skill, or hand off the diff if you cannot commit.
The published diagrams are combinations of a few shapes. These are the common kinds, each with a page where you can see it. There are more, and a new concept may need a new combination.
... row) with gray arrows to URL pills (globe + path, gray-filled when the path is not routable), bracket arrows beside the tree for which layout wraps which routes, and mono status badges (Routable, Not Routable). See Layouts and Pages and Project structure.SOFT NAV, HARD NAV). See Multi-zones.Some docs images are product screenshots (DevTools panels, the bundle analyzer, OS dialogs). Capture those from the real UI; this skill does not draw them.
Canvas. The docs canvas is 1600 CSS px wide and the page scales it to the column, so the sizes in the tokens are sizes at 1600. For a new diagram, declare 1600 and let the height follow the content. If a page already declares a narrower width, match it and scale element sizes by k = width / 1600, otherwise the picture renders larger than its neighbours once the page scales it. grid, swatchLegend, arrow, pageLayout, postCard and commentRows take or derive k and scale their defaults by it; pass × k sizes to skel.*, hole and card yourself.
Margins. The mdx height wins: fit the content to the declared box. Top must equal bottom and left must equal right, within 4px; the two pairs need not match each other. Measure from the ink with scripts/measure.py, not from the coordinates you passed: text drawn with dominant-baseline="central" has its visual top about 0.35 × size above its y, and textWidth is a heuristic, so expect to nudge by a few px after measuring.
Color. Within one picture a color means exactly one thing in the bars and the legend; if the legend says blue is "request-time content", nothing else may be blue. In the windows, rendered UI is always gray skeleton, whatever the bars say gray means; that is the docs' convention. Blue in a window marks the one state the picture is about (not included in static output, or newly rendered), the same state blue marks in the bars. See "What the colors mean" in style-tokens.md.
Alignment. Equal margins, shared edges, text centered in its box, arrows and splits lined up vertically through the whole diagram. This is the review bar.
Type. Code and routes in Geist Mono, everything else in Inter. Geist Mono must be installed locally; the fallback is ui-monospace.
$write-guide and $write-api-reference produce the mdx that references these images.$update-docs for finding which docs pages a code change touches.© vercel, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 6 other files (scripts) in .agents/skills/docs-diagrams of vercel/next.js.
Open the folder on GitHubat commit a32ddfd
Docs Diagrams 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 Diagrams this skillvercel/next.js | 143k | — | ~2.9k | Automated safety check: Pass | MIT | |
| Chatbot Mvp Distillationpdsuwwz/chatgpt-vue3-light-mvp | 578 | — | ~722 | Automated safety check: Pass | MIT | |
| Chatbot Mvp Distillation Zhpdsuwwz/chatgpt-vue3-light-mvp | 578 | — | ~414 | Automated safety check: Pass | MIT | |
| Markdown Mermaid WritingK-Dense-AI/scientific-agent-skills | 48k | 1 repos | ~4.2k | Automated safety check: Notes | Apache-2.0 | |
| Axiom Explainerdigoal/blog | 8.6k | — | ~626 | Automated safety check: Pass | GPL-2.0 | |
| Bug Hunterdigoal/blog | 8.6k | — | ~1k | Automated safety check: Pass | GPL-2.0 |
pdsuwwz/chatgpt-vue3-light-mvp
Distill the chatgpt-vue3-light-mvp project into reusable architecture for building similar ChatGPT-style web products in other repositories.
pdsuwwz/chatgpt-vue3-light-mvp
将 chatgpt-vue3-light-mvp 项目蒸馏为可迁移到其他项目的中文架构指南。适用于设计或实现类似 ChatGPT 的 Web 对话产品,包括 SSE/fetch 流式响应、模型适配器契约、打字机渲染、Markdown/代码/KaTeX/Mermaid 渲染、推理过程展示,以及从本 Vue 3 MVP 迁移到其他项目的方案规划。
K-Dense-AI/scientific-agent-skills
Writes scientific Markdown documentation and Mermaid diagrams for workflows, relationships, timelines, and schemas.
digoal/blog
生成面向学生的公理/定理深度讲解文案,输出图文并茂的 Markdown 文章。触发条件:用户输入一个观点、公理、定理或数学/科学/哲学命题,并希望获得系统性讲解文章。关键词包括:"讲解"、"解释"、"公理"、"定理"、"原理"、"推导"、"怎么来的"、"有什么用"、"证明"等。即使用户只说"帮我讲讲XX定理"或"解释一下XX原理",也应使用本 skill。输出保存到项目 markdown/…
digoal/blog
根据用户给出的行业名称(或默认使用热点社会新闻),抓取最新新闻热点,用"找世界bug"的视角——找出那些打眼一看就不合理的地方——深度分析根因、利益链条、监管盲区,并给出多维度解决思路,输出图文并茂(含SVG/Mermaid/ASCII图形)的Markdown文件,保存到项目markdown/目录。
digoal/blog
快速且通俗易懂地讲透一个行业,输出图文并茂的深度分析 Markdown 报告,保存到当前项目的 markdown/ 目录。触发条件:用户输入一个行业名称,并希望获得全面、通俗易懂的行业深度分析,关键词包括"讲透"、"深度分析行业"、"行业分析"、"帮我搞懂XX行业"、"XX行业是怎么赚钱的"、"XX行业有什么机会"、"XX行业怎么进入"、"产业链分析"、"行业机会"等。即使用户只说"帮我了解一下…
vercel/next.js
Manages stacked PRs and splits multi-part work into reviewable branches with gh-stack.
vercel/next.js
Benchmark React or Next.js changes on Vercel Sandbox VMs with paired A/B statistics: react PR/commit vs base, or Next.js PR/commit vs base, measured end-to-end through the bench/render-pipeline app…
vercel/next.js
Verify Next.js runtime behavior after editing app code. An agent skill from vercel/next.js.
vercel/next.js
Turn on Cache Components in a Next.js app and resolve the blocking routes it surfaces.
vercel/next.js
Build local React changes in the bundle variants consumed by Next.js, sync them into a local Next.js checkout, and test the resulting integration.
vercel/next.js
Audit and reduce Next.js browser initial-load work. An agent skill from vercel/next.js.
Works with
Categories
Draw diagrams for the Next.js docs in the style of the ones already published there: the light/dark PNGs an mdx references with <Image srcLight="/docs/light/<name.png" srcDark="/docs/dark/<name.png". js, published by the product's own GitHub organization.png".
Docs Diagrams fits situations like: API reference needs a new diagram; an existing one needs a change.
Run `npx skills add vercel/next.js --skill docs-diagrams -a claude-code`. Or copy the skill folder (.agents/skills/docs-diagrams in vercel/next.js) into .claude/skills/docs-diagrams in your project. Claude Code loads it when a task matches its description.
Run `npx skills add vercel/next.js --skill docs-diagrams -a codex`. Or copy the skill folder (.agents/skills/docs-diagrams in vercel/next.js) into .agents/skills/docs-diagrams 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 vercel/next.js --skill docs-diagrams -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-diagrams, .gemini/skills/docs-diagrams, .github/skills/docs-diagrams and .opencode/skills/docs-diagrams in your project.
Going by SKILL.md and its folder, Docs Diagrams needs JavaScript, Python and a shell for the scripts in its folder and the command-line tools its instructions call (node, curl and python3). Our summary lists: Python 3; Node.js; A Bash shell.
SKILL.md names 2 domains. In commands or code: h8dxkfmaphn8o0p3.public.blob.vercel-storage.com; the agent is likely to contact it when it follows the instructions. As links in the text: nextjs.org. 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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Docs Diagrams is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.9k tokens (SKILL.md is roughly 11k 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 Diagrams: Chatbot Mvp Distillation (pdsuwwz/chatgpt-vue3-light-mvp, 578 stars), Chatbot Mvp Distillation Zh (pdsuwwz/chatgpt-vue3-light-mvp, 578 stars), Markdown Mermaid Writing (K-Dense-AI/scientific-agent-skills, 48k stars) and Axiom Explainer (digoal/blog, 8.6k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
vercel (a GitHub organization, an official publisher) maintains it in vercel/next.js, which has 143,241 GitHub stars. The repository holds 27 skills in this directory. The repository was last updated on October 8, 2026.
Source: vercel/next.js on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.