docs-doc-blog
Use when planning, writing, translating, or reviewing a programmer-facing retikz blog article under apps/docs/src/modules/docs/contents/blog.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Use when planning, writing, translating, or reviewing a programmer-facing retikz blog article under apps/docs/src/modules/docs/contents/blog.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
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-blog |
| description | Use when planning, writing, translating, or reviewing a programmer-facing retikz blog article under apps/docs/src/modules/docs/contents/blog. |
写 apps/docs/src/modules/docs/contents/blog/<sectionId>/<slug>/index.{zh,en}.mdx 前先读 docs-doc-principle,再读本 skill 的 blog 差异(第三方链接、作者语气、可选英文、外站搬运)。
本 skill 只列与 docs-doc-principle 有差异或额外补充的部分。
retikz blog 默认走「作者讲 → AI 写」的双人协作,AI 不替作者构思,也不一次性写完整篇:
| 角色 | 职责 |
|---|---|
| 作者 | 给大纲(H2 列表 + 每节关键点 / 外链 / demo 参考);每节口语化讲想说什么;终稿审阅 |
| AI | 按 skill 规则把口语转写为 mdx:控段 3 行、转表 / 列表 / 代码块、嵌 ComponentPreview、维持双语 |
落地节奏(四阶段串行,不允许跳步、不许压缩成一步):
附加约束:AI 提议 OK,擅自加不行——AI 可以在每节范围内主动提议补充内容(demo / 链接 / 例子 / 节内顺序 / 形式转换等),但必须等作者点头才能进 mdx;作者没讲到、AI 也没提议过的内容,不能直接出现在草稿里。
一个关键约束:作者口语里给的外链 / demo 名 / 术语保留原样,AI 不"改进"(如把英文术语翻译成中文、把链接换成更"权威"的等)。作者每个选择背后通常都有上下文。
| 项 | 推荐目标 | 复核信号 | 超出处理 |
|---|---|---|---|
| 单篇阅读时间 | 15 分钟 | 接近或超过 20 分钟 | 检查主题与叙事主线是否内聚;只有主线能独立成立时才拆系列 |
| 单段行数 | 3 行 | — | 拆 bullet / 表格 / 代码块 |
| H2 章节数量 | 8 | 10 | 检查主题是否失焦;确有多个独立主题时拆系列 |
阅读时间只作为可读性诊断与推荐目标,不构成 BLOCKING,也不能单独触发系列拆分。内聚的设计理念、开发历程或连续论证可以保留为长文,通过 TOC、章节分组与稳定锚点改善跳读。
| 表达对象 | 优先形式 |
|---|---|
| 对比 / 配置 / 状态映射 / 决策权衡 | 表格 |
| 步骤 / 并列要点 / 时间线 | 有序 / 无序列表 |
| 用法演示 / 视觉效果 | <ComponentPreview> |
| API / 签名 / 配置 / 命令 / 真实历史代码 | 代码块 |
| 概念阐释、必要的"为什么" | 段落(≤ 3 行) |
只剩下"概念阐释"才用段落——所有可转换为列表 / 表格 / 演示的内容,都必须转换。
<ComponentPreview> 优先<ComponentPreview>——比代码块更生动<name>.demo.tsx 同级放在文章目录下(与 docs 一致)<ComponentPreview> 前后用一句话点出"它在演示什么"——为跨平台手抄做准备(见下文「跨平台搬运」)```ts、```tsx、```bash、```yaml、```json| 元素 | 原因 |
|---|---|
<ZodSchema> | docs Reference 词典页专用,blog 不渲染 schema 字段表;要说某个字段用 inline code 或小表 |
<ExamplePrompt> | docs 示例页 AI prompt 块专用 |
<ComponentPreview> / <Comparison> 仍可用。
| docs(principle 现行) | blog(本 skill) | |
|---|---|---|
| 第三方外链 | 禁止 | 允许——blog 是个人文字,引外部库 / 工具 / 文章合理;点到为止避免泛滥 |
| 站内跨页跳转 | react-router 路径(/kernel/concepts/anchors) | 同 |
| 项目仓库内文件(ADR / DESIGN / SKILL) | GitHub 完整 URL | 同 |
| mdx 暴露项目结构路径作为纯文字 | 禁止 | 同——用户读不到、点不到 |
| 文末引用清单 | 不要求 | 有引用时必填——见下「文末引用清单」 |
正文一旦出现外部链接 / 站内跨页 / 项目仓库 URL / 第三方文章 / 教程示例等引用,文末必须用一个 H2 节集中汇总,方便读者跳转 + 跨平台手抄整理。正文完全没有任何引用的纯叙述短文,可省略该节。
## 引用## References格式(无序列表,每条一句点出引用语境):
## 引用
- [TikZ for Impatient — §3.2](https://tikz.dev/tutorial):karl 圆原例出处
- [retikz core-design.md](https://github.com/Pionpill/retikz/blob/main/notes/architecture/core-design.md):IR 居中模型详述
- [shadcn/ui](https://ui.shadcn.com/) / [Tailwind CSS v4](https://tailwindcss.com/):无头库 + CSS-first 灵感来源
- 站内:[核心架构介绍](/kernel/introduction) — IR / Sugar / Kernel 三层全景
约束:
packages/kernel/core/src/ir/scene.ts、AGENTS.md)不算引用,不进清单。要引仓库内文件就配 GitHub 完整 URL 写成 [文件名](https://github.com/.../...);只在行文里 inline code 提一句文件位置而读者点不进去的,不列入[1] [2]——blog 站没渲染脚注;保留 inline link 即可<ComponentPreview hideCode> + 同级 <name>.demo.tsx;详细惯例去读 docs-figure-contract<img> 截图 / Mermaid / Excalidraw / draw.io——blog 站和 docs 站共用 retikz 活体演示的属性<br /> 软断或压缩措辞必填 4 字段:
---
title: 文章标题 # 必填,由 DocPage 渲染为 H1
description: 一句话副标题 # 必填,由 DocPage 渲染为副标题(≤ 30 字)
date: 2026-05-17 # 必填,发布日期,ISO YYYY-MM-DD
tags: [设计, IR] # 必填,1-3 个标签,字符串数组
---
tags 限 1-3 个——不无限增长;新文章优先复用已有 tag,确实没合适的再新建date 是发布日期,改正文不更新;文章演进走 git 历史,blog 数据点保持稳定series / cover 等额外字段——系列靠 sidebar 同 section 排列即可index.zh.mdx 必填,index.en.mdx 可选——缺 en 时站内自动 fallback 到 zh 并显示「暂无英文版」提示index.zh.mdx,由 AI 译出 index.en.mdx 初稿,作者 review 术语:
Sugar / Kernel / IR / Scene / ComponentPreviewelbow(折角)不译成 corner、anchor(锚点)不译成 positionjourney/alpha-0 / journey/alpha-1 / journey/alpha-2journey/post-1 / journey/post-2blog 文章预期会被作者手抄到掘金 / 公众号 / 其它平台。写作时要预想"去掉 retikz 专属组件后仍可读":
| 元素 | 跨平台行为 | 应对 |
|---|---|---|
frontmatter ---...--- | 各平台规则不一,多数不识别 | 手抄时直接删掉,正文从 ## 开始 |
<ComponentPreview> | 外部平台不认 | 前后一句话点出 demo 在演示什么,去掉组件后读者仍能理解 |
<Comparison target="..."> | 外部平台不认 | 同上:内容内嵌一句话,外部读者跳过对照块仍读得通 |
站内路径 /<module>/... | 外部平台访问会 404 | 手抄时改为 https://pionpill.github.io/retikz/<module>/... 完整 URL(BrowserRouter,不带 #) |
相对图片 ./hero.png | 外部平台拿不到 | 改 GitHub raw 绝对 URL,或上传到平台素材库 |
手抄不是工具的事——是写作时就把"外部读者最差视图"作为可读性下限考虑进去。
| 维度 | docs | blog |
|---|---|---|
| 受众 | 全体用户(含非程序员) | 程序员(多前端) |
| 语气 | 中立工具说明 | 第一人称、主观判断 |
| 第三方外链 | 禁 | 允许 |
| 必填结构 | 组件页 5 段、示例页能力节 | 无固定段落结构;文末「引用」节按正文有无引用选填 |
| 阅读时间推荐信号 | 教程约 10 min / 字典约 15 min | 约 15 min |
| ZodSchema / ExamplePrompt | 用 | 不用 |
| ComponentPreview / Comparison | 用 | 用 |
| 主观对比竞品 | 禁 | 平实比较 OK,针对性话语禁 |
| frontmatter | title / description | title / description / date / tags |
| 双语严格度 | zh / en 双轨缺一不可 | zh 必填,en 可选 |
``` 后不带 ts/tsx 等——语法高亮失效<ComponentPreview> 前后没有一句话点题——去掉组件后外部读者懵---...--- 块一起复制进掘金 / 公众号——大部分平台不识别,会作为正文显示出来elbow → corner、anchor → position)——人 review 时必须挡下<ZodSchema> / <ExamplePrompt>——这俩是 docs 专用元素<ComponentPreview hideCode>date——date 是发布日期,演进走 git 历史## 引用(en: ## References),只列正文出现过的,每条配一句语境;正文完全无引用的短文则不强制该节## 引用——清单只收实际有链接的项;行文里 inline code 形式提到的 packages/kernel/core/src/...、AGENTS.md 这类路径读者点不进去,不算引用,不进清单。真要进清单就配上完整 GitHub URL[1] [2]——blog 站没渲染脚注;正文用 inline link,文末清单是去重汇总写完一篇 blog 文章后:
按 docs-doc-principle 的分级验证规则选择命令:纯 MDX 文案只需 git diff --check + 页面 / 链接检查;新增或修改 demo / data / import 时再跑 pnpm --filter @retikz/docs exec tsc --noEmit。
浏览器开 /blog/<section>/<slug>,确认:
发布到外部平台前,先在本地浏览器把文章读一遍:
<ComponentPreview> 当作"代码块 + 一句话说明"的占位想象,确认上下文仍通顺./ / /<module>/... 在脑里替换为绝对 URL,确认链接仍可达## 开始是否成立——如果首段是孤立一句话要么并入下一节要么改为 ## 开头