Material Component Doc logo

Material Component Doc

OrganizationPopular
bytedance
material-component-doc

用于 FlowGram 物料库组件文档撰写的专用技能,提供组件文档生成、Story 创建、翻译等功能的指导和自动化支持

Overview

Publisherbytedance
Repositoryflowgram.ai
Skill namematerial-component-doc
Stars
8.5K
Forks
775
Bundled files
1
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 1 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by bytedance on GitHub. Read the source before you install it.

Installation

Install the Material Component Doc AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/bytedance/flowgram.ai/tree/main/.claude/skills/material-component-doc
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/bytedance/flowgram.ai.git /tmp/flowgram.ai
mkdir -p .claude/skills
cp -r /tmp/flowgram.ai/.claude/skills/material-component-doc .claude/skills/material-component-doc
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Material Component Doc in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Material Component Doc on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Material Component Doc is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

FlowGram 文档的组织结构

  • 英文文档: apps/docs/src/en
  • 中文文档: apps/docs/src/zh
  • Story 组件: apps/docs/components/form-materials/components
  • 物料源码: packages/materials/form-materials/src/components
  • 文档模板: ./templates/material.mdx

组件物料文档撰写流程

1. 源码定位

在 packages/materials/form-materials/src/components 目录下确认物料源代码地址。

操作:

  • 使用 Glob 工具搜索物料文件
  • 确认目录结构(是否有 hooks.ts, context.tsx 等)
  • 记录导出名称和文件路径

2. 需求收集

向用户询问物料使用实例和具体需求。

收集信息:

  • 主要使用场景
  • 典型代码示例(1-2 个)
  • 特殊配置或高级用法
  • 是否需要配图

3. 功能分析

深入阅读源代码,理解物料功能。

分析要点:

  • Props 接口(类型、默认值、描述)
  • 核心功能和实现方式
  • 依赖关系(FlowGram API、其他物料、第三方库)
  • Hooks 和 Context
  • 特殊逻辑(条件渲染、副作用等)

4. Story 创建

在 apps/docs/components/form-materials/components 下创建 Story 组件(详见下方 Story 规范)。

5. 文档撰写

基于模板 ./templates/material.mdx 撰写完整文档。

文档位置:

  • 中文:apps/docs/src/zh/materials/components/{物料名称}.mdx
  • 英文:apps/docs/src/en/materials/components/{物料名称}.mdx(翻译后)

6. 质量检查

检查清单:

  • Story 组件能正常运行
  • 代码示例准确无误
  • API 表格完整
  • 依赖链接正确可访问
  • 图片路径正确
  • Mermaid 流程图语法正确
  • CLI 命令路径准确

用户确认中文文档的撰写后,再执行翻译。 用户确认中文文档的撰写后,再执行翻译。 用户确认中文文档的撰写后,再执行翻译。

Story 组件规范

参考示例: apps/docs/components/form-materials/components/variable-selector.tsx

命名规范

文件命名: kebab-case,与物料名称一致

  • ✅ variable-selector.tsx
  • ✅ dynamic-value-input.tsx
  • ❌ VariableSelector.tsx

Story 导出命名: PascalCase + "Story" 后缀

  • BasicStory - 基础使用(必需)
  • WithSchemaStory - 带 Schema 约束
  • DisabledStory - 禁用状态
  • CustomFilterStory - 自定义过滤
  • 根据物料特性命名,见名知意

代码要求

1. 懒加载导入

tsx
// ✅ 正确
const VariableSelector = React.lazy(() =>
  import('@flowgram.ai/form-materials').then((module) => ({
    default: module.VariableSelector,
  }))
);

// ❌ 错误
import { VariableSelector } from '@flowgram.ai/form-materials';

2. 包装组件

tsx
// ✅ 正确
export const BasicStory = () => (
  <FreeFormMetaStoryBuilder
    filterEndNode
    formMeta={{
      render: () => (
        <>
          <FormHeader />
          <Field<string[]> name="variable_selector">
            {({ field }) => (
              <VariableSelector
                value={field.value}
                onChange={(value) => field.onChange(value)}
              />
            )}
          </Field>
        </>
      ),
    }}
  />
);

// ❌ 错误:缺少包装
export const BasicStory = () => (
  <VariableSelector value={[]} onChange={() => {}} />
);

3. 类型标注

tsx
// ✅ 正确
<Field<string[] | undefined> name="variable_selector">

// ❌ 错误
<Field<any> name="variable_selector">

4. 语言规范

代码和注释只使用英文,无中文。

完整示例

tsx
/**
 * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
 * SPDX-License-Identifier: MIT
 */

import React from 'react';
import { Field } from '@flowgram.ai/free-layout-editor';
import { FreeFormMetaStoryBuilder, FormHeader } from '../../free-form-meta-story-builder';

const VariableSelector = React.lazy(() =>
  import('@flowgram.ai/form-materials').then((module) => ({
    default: module.VariableSelector,
  }))
);

export const BasicStory = () => (
  <FreeFormMetaStoryBuilder
    filterEndNode
    formMeta={{
      render: () => (
        <>
          <FormHeader />
          <Field<string[] | undefined> name="variable_selector">
            {({ field }) => (
              <VariableSelector
                value={field.value}
                onChange={(value) => field.onChange(value)}
              />
            )}
          </Field>
        </>
      ),
    }}
  />
);

export const FilterSchemaStory = () => (
  <FreeFormMetaStoryBuilder
    filterEndNode
    formMeta={{
      render: () => (
        <>
          <FormHeader />
          <Field<string[] | undefined> name="variable_selector">
            {({ field }) => (
              <VariableSelector
                value={field.value}
                onChange={(value) => field.onChange(value)}
                includeSchema={{ type: 'string' }}
              />
            )}
          </Field>
        </>
      ),
    }}
  />
);

物料文档格式

使用模板

模板文件: ./templates/material.mdx

文档必须严格按照模板格式编写,包含以下章节:

  1. Import 语句
  2. 标题和简介(带可选配图)
  3. 案例演示(基本使用 + 高级用法)
  4. API 参考(Props 表格)
  5. 源码导读(目录结构、核心实现、流程图、依赖梳理)

参考示例

关键注意事项

API 表格要求:

  • 必须包含所有公开的 Props
  • 类型使用反引号(如 `string`)
  • 描述清晰简洁
  • 多个相关类型分开列表

源码导读要求:

  • 目录结构:展示文件列表及说明
  • 核心实现:用代码片段说明关键逻辑
  • 整体流程:Mermaid 流程图(推荐)
  • 依赖梳理:分类列出 FlowGram API、其他物料、第三方库

图片处理指南

截图要求

  1. 时机: Story 组件完成后,运行 docs 站点截图
  2. 内容: 捕获物料的典型使用状态,清晰可见
  3. 格式: PNG,适当压缩

命名和存储

  • 命名: {物料名称}.png(kebab-case)
  • 存储: apps/docs/src/public/materials/{物料名称}.png
  • 引用: /materials/{物料名称}.png

在文档中使用

mdx
<br />
<div>
  <img loading="lazy" src="/materials/{物料名称}.png" alt="{物料名称} 组件" style={{ width: '50%' }} />
</div>

翻译流程

翻译时机

  • ✅ 用户明确要求翻译
  • ✅ 中文文档已经用户审核确认
  • ❌ 文档还在修改中
  • ❌ 用户未确认最终版本

翻译原则

术语一致性:

  • ComponentName → ComponentName(组件名不翻译)
  • Props、Hook、Schema 等术语保持原文

代码不翻译:

  • 所有代码块、命令、路径保持原样

链接处理:

  • 内部链接:/zh/ → /en/
  • 外部链接和 GitHub 链接:保持不变

格式保持:

  • Markdown 格式、缩进、空行完全一致

翻译检查清单

  • 标题和描述已翻译
  • 代码示例未被翻译
  • 命令和路径保持原样
  • 内部文档链接已更新
  • API 表格描述列已翻译
  • Mermaid 图中文节点已翻译
  • 术语使用一致

最佳实践

Props 提取技巧

  1. 查找 interface 或 type 定义
  2. 检查组件函数参数类型
  3. 查找 defaultProps 确认默认值
  4. 阅读 JSDoc 提取描述

依赖分析方法

  1. 查看 import 语句(直接依赖)
  2. 分析 Hook 调用(FlowGram API)
  3. 查找组件引用(其他物料)
  4. 检查 package.json(第三方库)

Mermaid 流程图建议

  1. 简洁明了,关注核心流程
  2. 使用时序图绘制

常见错误避免

❌ 直接导入物料而不使用 React.lazy ❌ API 表格遗漏 Props ❌ 依赖链接失效 ❌ 中英文混用 ❌ 路径格式错误

✅ 参考优秀示例 ✅ 仔细阅读源码 ✅ 验证所有链接 ✅ 保持语言和格式一致 ✅ 使用项目约定的路径格式


相关工具和资源

开发命令

bash
# 启动文档站点
rush dev:docs

# 查看修改
git diff
git diff --cached

关键目录

目录说明
packages/materials/form-materials/src/components物料源码
apps/docs/src/zh/materials/components中文文档
apps/docs/src/en/materials/components英文文档
apps/docs/components/form-materials/componentsStory 组件
apps/docs/src/public/materials图片资源
./templates文档模板

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Material Component Doc AI skill do?

用于 FlowGram 物料库组件文档撰写的专用技能,提供组件文档生成、Story 创建、翻译等功能的指导和自动化支持

Why use Material Component Doc on TypingMind?

Because you install it once and use it with any model. Material Component Doc is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Material Component Doc in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/bytedance/flowgram.ai/tree/main/.claude/skills/material-component-doc. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Material Component Doc?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Material Component Doc?

As many as you like. As long as a model supports skills, you can use Material Component Doc with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Material Component Doc AI skill free?

Yes. It is published on GitHub by bytedance under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇