[teamai] Push 87 resource(s) from XingfenD

This commit is contained in:
2026-09-10 16:10:45 +08:00
parent 425c9c078a
commit 65c04def51
1314 changed files with 211681 additions and 0 deletions
@@ -0,0 +1,103 @@
# 组件使用政策(reacticle 协议)
文章用 `reacticle` 组件协议写:**不手写裸 `div` / `className` / 行内 `style` / CSS**。
结构走语义组件,正文走段落,自定义视觉走 `Raw`。从包入口导入:
```tsx
import { ThemeProvider, Article, Hero, Lead, Section, Aside, Table, Raw } from "reacticle";
```
## 核心规则(始终适用)
1. **Prose-first,组件按需,Raw 自由。**
- **正文是主体**:普通段落写成 `Section` 的 children,应占文章绝大部分。
- **语义组件是点睛,只在内容确实"是"那个结构时才用**:`Summary` / `Aside` /
`Quote` / `Table` / `RiskList` / `Decision` 等。不要堆叠当装饰 —— 堆卡片会让
文章显得做作、零碎。litmus test:若一句话 / 一个列表 / 一张表 / 一块 Raw 读起来
更好,就用那个。
- **Raw 相反:鼓励多用。** 交互、动画、自定义可视化、新颖排版 —— Markdown 做不到的
东西,才是把文章从"能读"变成"值得读"的关键。Raw 不打断阅读,它给密集文本节奏与
呼吸。
2. **表达语义,不表达布局。** 说"这是 insight / risk / decision",别说"蓝卡片、24px 边距"。
3. **Props 即协议。** 填齐必填字段;确实没有就留空 —— 组件会渲染显式的 `⚠ 未指定xxx`
标记,让缺口可见。**绝不为掩盖缺口而编造。**
4. **主题,不写样式。** 作者只通过 `ThemeProvider` 选一个主题,从不写组件样式。
5. **始终用 `<ThemeProvider theme="...">` 包住 `<Article>`。**
6. **版式与主题解耦。** `Article` 的 `width`(`narrow` / `regular` / `wide` / `full`,默认
`regular`)决定阅读列宽,`toc`(默认在本 Skill 开启)决定是否有左侧目录 —— 都按内容选、
经 Plan Checkpoint 确认,**不由主题决定**。详见 `references/layout.md`。
7. **一个 Section = 一个文件。** 每个 Section 必须是独立组件(`article/sections/NN-*.tsx`),
**坚决不允许**把多个 Section 写进一个组件;`Article.tsx` 只做组装(assembler)。这是
多 Agent 并行开发的前提,详见 `references/section-build.md`。
## 组件分两层:默认核心 + 领域特例
**默认核心组件(绝大多数文章只用这些 + 正文 + Raw):**
- 结构:`Article`、`Hero`、`Lead`、`Section`、`Subsection`、`Conclusion`、`TOC`
- 观点:`Summary`、`Aside`、`Quote`
- 数据:`Table`
- 技术:`CodeBlock`(写代码**只用它**)、`Formula`
- 媒体:`Image`
- 自由层:`Raw`
**领域特例组件(仅当内容"确实是"该结构时按需取用,不要因为属于某类文章就全用上):**
- 决策 / 审阅:`RiskList`、`Decision`、`ActionList`、`Checkpoint`、`Tradeoff`、`Incident`
- 代码评审:`DiffReview`
- 交互壳:`Detail`、`Tabs`
- 富媒体:`Video`、`Audio`
> **不要暴露给作者**:`HighlightedCode` 是 `CodeBlock` 的内部底层,写代码一律用
> `CodeBlock`,不直接使用 `HighlightedCode`。
选组件前先过 litmus test(规则 1):若正文 / 列表 / 表格 / Raw 读起来更好,就不要为了
用组件而用组件。领域特例组件每多用一个,都要能回答"这块内容本质上就是它"。
完整组件 API(属性、用法)见组件库本身的 reference:
`skill/references/{structure,insight,structured,decision,technical}.md`(reacticle-authoring
skill),按需读取,不要一次全读。
## 使用原则
- 正文是主体。组件是语义,不是装饰。
- Raw 是文章表现力,不是应用开发入口(边界见 `raw-policy.md`)。
- `Table` 负责二维信息;`Image` 负责真实或生成配图;`Raw` 是自由的 Web 层 —— 任意
HTML / CSS / JS / React:交互、自定义布局排版、动效、嵌入小工具,以及按需的图解(SVG /
canvas),SVG 只是其中一种手段,不是默认。
- **`Raw` 与 `Image` 正交,不是二选一**:`Raw` 始终默认存在、照常使用;`Image` 是否使用、
用哪种来源由 Plan Checkpoint 的配图策略决定(见 `references/asset-policy.md`)。选配图
`none` 只表示不用外部图片,`Raw` 不受影响。
## 信息密度与组件比例
见 `information-density.md`:100% 时长文优先、Raw 点亮关键概念;密度越低,视觉块比例
越高,但**仍必须保持文章形态**。
## 最小骨架(注意比例:大量正文 + 一个点睛组件 + 一块 Raw)
```tsx
import { ThemeProvider, Article, Hero, Lead, Section, Aside, Raw } from "reacticle";
export function Article_() {
return (
<ThemeProvider theme="tufte">
<Article>
<Hero title="标题" subtitle="副标题" meta={[{ label: "日期", value: "2026-06-08" }]} />
<Lead>导语,框定主题。</Lead>
<Section index="01" title="第一节">
<p>正文段落用 children —— 这应是文章主体,尽量多写正文。</p>
<p>再写一段,把背景、推理、结论用文字讲清楚。</p>
<Aside tone="principle" label="核心判断">一句话的核心判断。</Aside>
<Raw title="为本段现写的内联 SVG">
<svg viewBox="0 0 240 60" width="100%">
<polyline points="0,50 40,42 80,46 120,20 160,28 200,8 240,14"
fill="none" stroke="var(--ra-color-accent)" strokeWidth="2" />
</svg>
</Raw>
</Section>
</Article>
</ThemeProvider>
);
}
```