jpskill.com
📦 その他 コミュニティ

material-component-doc

FlowGramの素材ライブラリにあるコンポーネントのドキュメント作成を支援するSkillで、ドキュメント生成やStory作成、翻訳などの機能をガイドし、作業を自動化することで効率的なドキュメント作成を支援するSkill。

📜 元の英語説明(参考)

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

🇯🇵 日本人クリエイター向け解説

一言でいうと

FlowGramの素材ライブラリにあるコンポーネントのドキュメント作成を支援するSkillで、ドキュメント生成やStory作成、翻訳などの機能をガイドし、作業を自動化することで効率的なドキュメント作成を支援するSkill。

※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。

⚡ おすすめ: コマンド1行でインストール(60秒)

下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。

🍎 Mac / 🐧 Linux
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o material-component-doc.zip https://jpskill.com/download/17662.zip && unzip -o material-component-doc.zip && rm material-component-doc.zip
🪟 Windows (PowerShell)
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/17662.zip -OutFile "$d\material-component-doc.zip"; Expand-Archive "$d\material-component-doc.zip" -DestinationPath $d -Force; ri "$d\material-component-doc.zip"

完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。

💾 手動でダウンロードしたい(コマンドが難しい人向け)
  1. 1. 下の青いボタンを押して material-component-doc.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → material-component-doc フォルダができる
  3. 3. そのフォルダを C:\Users\あなたの名前\.claude\skills\(Win)または ~/.claude/skills/(Mac)へ移動
  4. 4. Claude Code を再起動

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。

詳しい使い方ガイドを見る →
最終更新
2026-05-18
取得日時
2026-05-18
同梱ファイル
1

📖 Skill本文(日本語訳)

※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。

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.tscontext.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. 遅延ロードインポート

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

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

2. ラップコンポーネント

// ✅ 正しい
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. 型注釈

// ✅ 正しい
<Field<string[] | undefined> name="variable_selector">

// ❌ 誤り
<Field<any> name="variable_selector">

4. 言語規約

コードとコメントは英語のみを使用し、中国語は使用しません。

完全な例

/**
 * 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

ドキュメントでの使用

<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 が欠落している ❌ 依存関係リンクが無効になっている ❌ 中国語と英語が混在している ❌ パス形式が間違っている

✅ 優れた例を参照する ✅ ソースコードを注意深く読む ✅ すべてのリンクを検証する ✅ 言語と形式の一貫性を保つ ✅ プロジェクトで合意されたパス形式を使用する


関連ツールとリソース

開発コマンド

# ドキュメントサイトを起動する
rush dev:docs

# 変更を確認する
git diff
git diff --cached

重要なディレクトリ

ディレクトリ 説明
packages/materials/form-materials/src/components 物料ソースコード
`ap

(原文がここで切り詰められています)

📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開

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. 懒加载导入

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

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

2. 包装组件

// ✅ 正确
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. 类型标注

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

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

4. 语言规范

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

完整示例

/**
 * 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

在文档中使用

<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. 查找 interfacetype 定义
  2. 检查组件函数参数类型
  3. 查找 defaultProps 确认默认值
  4. 阅读 JSDoc 提取描述

依赖分析方法

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

Mermaid 流程图建议

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

常见错误避免

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

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


相关工具和资源

开发命令

# 启动文档站点
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/components Story 组件
apps/docs/src/public/materials 图片资源
./templates 文档模板