docs-doc-component
Use when writing or editing component pages under a module's apps/docs component contents, excluding pages marked as extension guides.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Use when writing or editing component pages under a module's apps/docs component contents, excluding pages marked as extension guides.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
Use when changing any retikz apps/docs content, route data, i18n, demo, SourceLinks, or schema reference before loading the matching page-type skill.
Use when retikz needs multiple independent LLMs to review the same fixed code, ADR, implementation plan, test contract, commit, or working-tree snapshot before a gate or delivery decision.
Use when an Alpha ADR needs a pre-implementation capability gate, or a Beta milestone needs code-based completeness and package-boundary auditing.
Use when planning a retikz architecture direction, version roadmap, or alpha feature that may need a long-lived ADR before implementation.
Use when retikz work is primarily refactoring, reorganization, renaming cleanup, modularization, or internal simplification and should start from a reviewed implementation plan before code changes.
Use when retikz implementation, adversarial testing, and docs are complete, and an ADR or beta TODO needs changelog, contract consistency review, roadmap status updates, or final human acknowledgement.
| name | docs-doc-component |
| description | Use when writing or editing component pages under a module's apps/docs component contents, excluding pages marked as extension guides. |
apps/docs/src/modules/docs/contents/<module>/components/** 下加 / 改组件页docs-doc-principle 拿通用规则docs-doc-standard-compositedocs-doc-control,统一面板、契约、取景与视觉层级ComponentPreview 按需契约本 skill 只覆盖组件页特有的页面结构与子节写法;其它一切(三处协同、双语、写作风格、Comparison、自绘图示、宽度、阅读时间、ZodSchema、Common Mistakes 等)以 principle 为准。
组件页尤其要遵守 principle 的“新手友好,不用全知视角”规则:Usage 先回答这个组件帮用户解决什么问题,再给最小骨架;Examples 先展示可复制写法,再解释术语;How it works 只在用户可观察行为需要解释时写,不能把内部类型名和实现决策当正文主线。
组件页首先说明组件的核心抽象、在能力闭环中的职责和边界;props 只是实现这些职责的接口,不是页面主线。边框色、背景色、线宽、透明度等跨图元通用样式默认简写并保留在 controls / API 表中,不为每个取值或字段建立独立叙事。
字典类组件页使用下面 5 类 section,按顺序出现;How it works / Related 可选,其余不要新增散乱顶级章节。需要额外内容时优先并入 Usage、Examples、How it works、API Reference 或拆子页。
| section | 必需 | 内容 |
|---|---|---|
## 用法 / Usage | ✅ | 两个纯代码块(不放 <ComponentPreview>):import + 一个最小 JSX 骨架 |
## 例子 / Examples | ✅ | 页面主体;多子节,每子节围绕一个能力点,简单 demo + 一句说明,回答"长什么样、怎么写" |
## 技术原理 / How it works | 可选 | 底层 compile / 投影 / 命名空间 / bbox 计算等机制说明,回答"为什么这么工作 / 内部怎么走的";用户读完用法 + 例子已会用,本节是 deepdive |
## API 参考 / API Reference | ✅ | 4 列表(属性 / 类型 / 默认值 / 描述 / Prop / Type / Default / Description),无默认填 —,属性名 + 类型用反引号包;多组件合一页时按组件分子节 |
## 相关 / Related | 可选 | 只放相关组件、概念、Reference、Guide 链接;不承载长解释 |
frontmatter title + description 始终在;H1 由 DocPage 渲染,正文不要再写 # 标题。zh 用中文小节标题、en 用英文,但层级、子节数、表格列数保持对齐。
阅读路径:
中文段标题用「技术原理」、英文段标题用「How it works」;双语层级、子节数对齐。
components/shapes/** 下的形状页是上面常规结构的例外:同一个几何形状同时有两种用法——Sugar 组件(画一条 <Path>,如 <Circle>)和 Node 形状(节点边界,如 shape="circle")。这类页改用两大块自包含结构,每块各写自己的用法 / 例子 / API,让"画图形"和"建节点"两类读者各自一口气读完、不来回跳:
| 段 | 必需 | 内容 |
|---|---|---|
| 导言 | ✅ | 一句话点出该形状的双重身份 + 一句决策(要画线 → Sugar;要可连节点 → Node),并链到 形状组落地页 看完整定义——不在每页重写定义 |
## 作为 Path 图形(Sugar) | ✅ | 该 Sugar 组件的完整文档:### 用法(import + 骨架)/ ### 例子(demo + 写法表)/ ### API 参考(组合表) |
## 作为 Node 形状 | ✅ | 该 shape 的完整文档:### 用法 / ### 例子(含 params / 几何 anchor)/ ### API 参考(shape 值 / params / 边界表) |
## 技术原理 / How it works | 可选 | 共享底层机制(Sugar→Path、Node→边界外接、角度坐标系等);子节用一句标注适用 Path / Node / 两者 |
## 相关 / Related | ✅ | 链接 Node、相邻形状页、形状组、扩展 Reference |
要点:
shapes/index),各形状页导言只一句话 + 链接,不复制## 技术原理 仍是可选 deepdive,按本页技术原理规则用 <ComponentAlert type="tip"> 写导读;不要每个块各写一个技术原理,统一收在共享段shadcn 同款,import 与最小骨架分两个代码块(只显示代码,不放 ComponentPreview):
## 用法
```tsx
import { Path, Step } from '@retikz/react';
```
```tsx
<Path stroke="currentColor">
<Step kind="move" to="a" />
<Step kind="line" to="b" />
</Path>
```
骨架展示组件名 / props / children 形态,不要求可运行——<ComponentPreview> 留给 Examples 段。
Usage 下应包含使用时机相关说明,帮助读者判断这个组件适合解决什么问题。说明很短时,直接接在最小骨架后的段落尾;说明较长,或 Usage 下已有子分小节时,单独开一个 ### 何时使用 / When to use 子小节说明。
retikz 底层组件多数可直接使用,不把 shadcn compound component 的固定装配结构当作组件页前提,也不设置独立的 ## 组合 / Composition 顶级章节。
<Path> 与 <Step>Examples 里的示例较多时,必须先抽象主题,再在主题下细分具体能力,避免一长串并列 ### 把页面变成 demo 清单。
本节只判断是否使用 controls;实现、契约、取景、caption、视觉层级与验证全部由 docs-doc-control 拥有。
先判断变化是否改变组件结构或语义:
| 变化 | 承载方式 |
|---|---|
| JSX 结构、组合关系、职责边界、错误行为或编译机制不同 | 保留静态 demo |
| 任务与场景固定,只调整样式、尺寸或其它 prop 值 | 合并进一个 controls playground |
| 闭合 union / 内置 kind 属于同一能力,能在固定场景比较,且源码完整映射每个对象 | 可合并为 playground,并保留 canonical 说明 |
| 变体无法共享比较场景,或切换后读者需要重新理解组合、所有权、错误或边界 | 保留静态 demo |
| 样式本身就是组件的核心能力,或取值会改变语义 | 按核心语义保留必要静态 demo |
controls 用于探索参数空间,不用于隐藏核心设计。每页通常只设一个主 playground;正文仍保留 canonical 用法,以及 controls 无法表达的语义分支。闭合集合放入 controls 时必须覆盖完整公开集合;某分支失败时追查实现或记录 blocker,不从 demo 静默删除。
规则:
<Draw> 的弧线、二次贝塞尔、三次贝塞尔可统一放进"曲线"主题,再在主题下细分###,组内具体示例用 ####;如果该页示例较少,可直接用 ###<ComponentPreview>"的节奏;仅有视觉参数差异的条目不单独生成示例## 技术原理(见下节),不要塞进 Examples 子节让用户在"看 demo"和"读原理"之间来回切ComponentPreview.caption,只说明“操作或观察什么”,不另写灰色 span注意:本节的 "Examples" 指组件页内部的
## 例子子节——是该组件自身能力的多个独立小 demo。这与contents/<module>/examples/**顶层「示例页」是两件事,后者走docs-doc-example。
可选段。组件有"用户可感知但不直观的底层行为"或"陷阱性机制"时才写;简单组件(<Coordinate> / <Text> / <Step> 等)通常不需要。
| 段 | 内容 | 阅读路径 |
|---|---|---|
## 例子 / Examples | 简单 demo + 一句说明,回答"长什么样、怎么写";用户复制即用 | 用户线性必读 |
## 技术原理 / How it works | 机制 / 原理性说明,回答"为什么这么工作 / 内部怎么走的";偏说明文 + 边界 case + 概念性插图 | 用户可选,想 deepdive 才看 |
判断哪边写:
至少满足以下一条才写:
<Scope> 的 namespace stack / shadowing / forward-reference 规则)<Path> step.to 的 polar/at/offset referent 投影)<Coordinate> 的 0×0 占位语义)简单 sugar(<Draw> / <EdgeLabel>)或纯样式 prop 组件不需要本节——它们没有底层 compile 行为,硬写会变成「为了凑节而写」。
写本节前先读实现入口与相关测试,确认真实的行为、优先级和职责边界,再提炼成用户可观察的机制。正文不能只堆文字,也不能把内部函数名、类型名或调用顺序当作解释;它们只用于核对结论和提供源码入口。
子节用 ### 平铺;每个子节单独一个主题(如 scope 的「命名空间与隔离」/「重复 id 处理」/「scope.id synthetic bbox」/「transforms 展平到 Scene」/「scope 下相对定位投影」)
节首用 <ComponentAlert type="tip"> 写一句导读,明示"上手不依赖本节、按需回来即可"——光靠 H2 在 Examples 之后的位置信号不够;初学者默认按顺序读完才算掌握,硬啃机制描述容易劝退。导读把"先会用、再懂原理"的学习路径写明,给读者跳过的许可
句式参考(按组件自身机制替换 description):
<ComponentAlert
type="tip"
title="上手阶段可跳过本节"
description="遇到边界 case 或想理解本组件的核心机制时再回来读。"
/>
<ComponentAlert
type="tip"
title="Optional for everyday use"
description="Revisit when you hit edge cases or want to understand the component's core mechanism."
/>
单子节阅读体量较大时先压缩重复解释、增加清晰小节和跳读提示;只有内容能独立形成概念任务时才拆到子页或 concepts/,时间估算本身不构成拆页条件
顺序按"用户最容易碰到 → 最少碰到"排:常见陷阱(重复 id / shadowing)在前,底层机制(bbox 计算 / 变换展平)在后
仍服从 principle 的「文字精简、表格 / 列表 / 代码块优先」规则。本节常用的几种表达:
<ComponentPreview hideCode> 当叙述图,用 retikz 自绘逻辑图,别引第三方截图 / Mermaid / draw.io
/kernel/concepts/design/principles,不要在组件页重复绘制docs-figure-contract 的语义规则选择,整图保持同一种边界模式;需要解释实现逻辑时继续读 docs-figure-logic<ComponentPreview>(带源码)演示「这样写会被拒 / 这样写才能工作」输入 → compile 行为 → 用户可见效果<Comparison target="tikz">:对照 TikZ pgf 同机制的实现可以提一下,但只在差异有教学价值时;不为对照而对照<SourceLinks sources={[{ label, path, startLine?, endLine? }]} /> 收尾
sources 只列直接实现入口与关键决策分支;label 用当前语言概括机制,不写文件名path 写仓库相对路径,行号范围只覆盖支撑当前结论的实现;完成前确认文件存在、行号范围不得超出文件、代码仍能支撑正文结论<small>、完整 GitHub URL 或本地文件路径属性 / 类型 / 默认值 / 描述(zh)或 Prop / Type / Default / Description(en)—(em dash);不要留空field? 这类裸可选字段代替字段类型`stroke`、`'->'`\| 转义:`'butt' \| 'round' \| 'square'`<Path> 同时记 <Step>),按组件分 ### 子节,每个组件一张 4 列表### —— 满足 ≥3 同类时必须主题分组到 ####examples/,不要塞进单组件页的 ## 例子## 技术原理,让用户能选择性跳过<SourceLinks> 给次要层级的源码入口;不要手写 <small>、完整 GitHub URL 或本地文件路径hideCode —— How it works 里的叙述性插图(架构图 / 概念示意)必须 <ComponentPreview hideCode>;演示边界 case 的 demo 才保留源码