docyrus-architect について
docyrus-architectは、Docyrusのデータソースを管理・検索するためのスキルです。データ構造の設定やデータ操作を行うユーザー向けに、データソース、フィールド、列挙値、カスタムクエリの管理と、クエリおよびOpenAPI仕様の更新手順を扱います。
主な機能
- 01アプリとデータソースメタデータの確認
- 02データソースとフィールドの作成・管理
- 03列挙値とリレーションフィールドの設定
- 04データ検索と計算の実行
- 05カスタムクエリの管理と実行
- 06OpenAPI仕様の再生成
活用シーン
- 01フィールドと列挙値を含むテーブルの作成
- 02データソースのレコードの絞り込みや集計
- 03データ構造の変更と仕様の同期
- 04SQLテンプレートの保存・確認・実行
MCP 対応
Docyrusでdocyrus-architect MCPツールを使う手順を案内します。ツールはデータソースの確認・管理、レコード検索、カスタムクエリの管理、OpenAPI仕様の更新に対応します。
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ docyrus/ agent-skills --skill docyrus-architectインストール後、Claude Code で/docyrus-architectを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/custom-query-guide.mddata-source-query-guide.mdformula-design-guide-llm.mdformula-reference.md詳細
Docyrus Architect
Docyrus でデータソースを管理・照会するための docyrus-architect MCP ツールの使用ガイドです。
ツールの概要
検出ツール
get_apps— テナントのアプリを一覧表示します。対象のtenantAppIdを見つけるため、create_data_sourceの前に使用します。get_data_source_list— 名前、説明、またはアプリ ID でデータソースを検索します。get_data_source_list_with_fields— 上記と同じ検索を行いますが、フィールド名と型も含めて返します。get_data_source_metadata— データソースの完全なメタデータ(ID、型、スラッグ、列挙値、リレーションを含むフィールド)を取得します。フィールドのスラッグとリレーションの参照先を確認するため、クエリの前には必ず呼び出してください。get_enums_by_field_id— 選択、ステータス、tagSelect フィールドの列挙値オプションを取得します。read_current_user/read_tenant_user— ユーザー情報を取得します。
データソースの CRUD
create_data_source— 新しいデータソース(テーブル)を作成します。デフォルトのフィールドとして、id、autonumber_id、name、record_owner、created_on、created_by、last_modified_by、last_modified_onが自動作成されます。create_data_sources_batch— フィールドと列挙値オプションを含む複数のデータソースを、単一のアトミックなトランザクションで作成します。field-relation型では、スラッグを使ってバッチ内のデータソースを相互参照できます。1 バッチにつき最大 20 個のデータソースを作成できます。update_data_source— データソースのプロパティを更新します。delete_data_source— データソースとそのすべてのデータを削除します。
フィールド管理
create_fields— フィールドを一括作成します。field-relation型ではrelationDataSourceIdを設定します。update_fields— フィールドを一括更新します。CUSTOM 以外のフィールドにはカスタマイズレコードが作成されます。delete_fields— ID を指定してフィールドを一括削除します。
列挙値管理
create_enums— select/tagSelect/status フィールドの列挙値オプションを作成します。フィールド固有の列挙値にはfieldIdを、共有列挙値セットにはenumSetIdを渡します。update_enums— 列挙値オプションの名前、スラッグ、色、アイコンを更新します。delete_enums— 列挙値オプションを削除します。
OpenAPI 仕様
regenerate_openapi_spec— データソースまたはフィールドの変更後、テナントの OpenAPI 仕様を再生成してアップロードします。対象を絞るには、省略可能なdataSourceSlugs(文字列配列)を指定します。省略すると、すべてのデータソースが対象になります。アップロードされた仕様のpublicUrlを返します。仕様との同期を保つため、create_data_source、update_data_source、delete_data_source、create_fields、update_fields、またはdelete_fieldsの操作後には、必ず呼び出してください。
クエリと計算
query_data_source— フィルタリング、並べ替え、集計、数式、ピボット、子クエリを使ってデータを読み取ります。クエリ構文の全容については、references/data-source-query-guide.md を参照してください。evaluate_jsonata— JSONata 式をテストします。計算フィールドの数式の検証に使用します。
カスタムクエリ
get_custom_queries— テナントのアーカイブされていないカスタムクエリを一覧表示します。get_custom_query_by_id— カスタムクエリの定義全体(name、description、query、filters)を読み取ります。create_custom_query— Handlebars 変数と省略可能なフィルター定義を使って、保存済みの SQL テンプレートを作成します。update_custom_query— 既存のカスタムクエリの指定したフィールドを更新します(部分更新)。delete_custom_query— カスタムクエリをソフト削除(アーカイブ)します。run_custom_query— 保存済みのカスタムクエリを、実行時フィルター、ページネーションオフセット、省略可能なシミュレーションモードを指定して実行します。
一般的なワークフロー
フィールドと列挙型を含むデータソースの作成
単一のデータソースを作成する方法:
get_appsを呼び出して、対象アプリの ID を確認します- タイトル(複数形)、名前(単数形)、スラッグ(単数形の snake_case)を指定して
create_data_sourceを呼び出します - すべてのカスタムフィールドを指定して
create_fieldsを呼び出します(デフォルトフィールドはすでに存在します) - select/tagSelect/status フィールドの場合は、手順 3 で取得したフィールド ID を使って
create_enumsを呼び出します regenerate_openapi_specを呼び出して、OpenAPI 仕様を更新します
一括作成する方法(複数のデータソースを作成する場合に推奨):
get_appsを呼び出して、対象アプリの ID を確認します(任意。デフォルトは「Default Customizations App」です)- データソース定義の配列を指定して
create_data_sources_batchを呼び出します(最大 20 件)- 各データソースには
title、name、slug、fields配列を含めます - select/status/tagSelect フィールドには、インラインの
enumOptionsを含められます - 同じバッチ内の他のデータソースを参照するには、
relationDataSourceIdにスラッグ参照を使用します - すべてのデータソース、フィールド、列挙型は、単一のアトミックトランザクションで作成されます
- 各データソースには
regenerate_openapi_specを呼び出して、OpenAPI 仕様を更新します
データのクエリ
get_data_source_metadataを呼び出して、フィールドのスラッグ、型、リレーションを確認します- 適切な列、フィルター、並べ替えを指定して
query_data_sourceを呼び出します - 高度なクエリ(集計、数式、ピボット、子クエリ)については、references/data-source-query-guide.md を参照してください
既存のデータソースの変更
get_data_source_metadataを呼び出して、現在のフィールドを確認します- 必要に応じて
create_fields/update_fields/delete_fieldsを使用します - 列挙型を変更する場合は、まず
get_enums_by_field_idを使用し、その後create_enums/update_enums/delete_enumsを使用します regenerate_openapi_specを呼び出して、OpenAPI 仕様を更新します
カスタムクエリのライフサイクル管理
get_custom_queriesを呼び出して、既存のクエリを探すか、命名を確認しますname、query、および任意のdescription/filtersを指定してcreate_custom_queryを呼び出しますget_custom_query_by_idを呼び出して、保存されたテンプレートとフィルター定義を確認します- 対象を絞った編集(名前の変更、SQL テンプレートの修正、フィルター定義の更新)には
update_custom_queryを使用します - 明示的にアーカイブを依頼された場合にのみ
delete_custom_queryを使用します
カスタムクエリの実行とデバッグ
- まず
get_custom_query_by_idを呼び出して、SQL テンプレートと利用可能なフィルタースラッグを確認します - クエリのフィルタースラッグに一致する
rules[].fieldの値を使って、実行時のfiltersを作成します - 複雑なクエリや信頼できないクエリでは、
simulate: trueを指定してrun_custom_queryを呼び出し、実行計画の出力を確認します simulate: false(または省略)を指定してrun_custom_queryを呼び出し、実際のデータを取得します- ページネーションには
offsetを使用します。1 回の実行で取得できる行数は最大 50,000 行です
主なルール
データソースの作成
titleは複数形(例:「Sales Orders」)、nameは単数形(例:「Sales Order」)、slugは単数形の snake_case(例:「sales_order」)にします- 複雑なフォームには
defaultEditFormTarget: "tab"、シンプルなフォームには"side"を使用します - CRM タイプのデータソース(リード、連絡先、商談)では、
pluginActivityViewを有効にします - コラボレーション用のデータソースでは、
pluginCommentsを有効にします - レコードにファイルを添付する必要がある場合は、
pluginFileを有効にします - レコードごとにリッチテキストドキュメントが必要な場合は、
pluginDocymentを有効にします
フィールドの種類
field-relationにはrelationDataSourceIdが必要です。関連するデータソースの ID(UUID)、または一括操作の場合は同じバッチ内にある別のデータソースのスラッグを指定しますfield-listは子レコード(1 対多)を表示する仮想フィールドで、DB には保存されませんfield-select/field-tagSelect/field-statusには列挙型のオプションが必要です:create_fieldsでは、フィールドの作成後にcreate_enumsを呼び出しますcreate_data_sources_batchでは、フィールド定義にインラインのenumOptions配列を含めます
field-formulaは JSONata 式を使用します。最初にevaluate_jsonataでテストしてくださいfield-inlineDataはオブジェクトの配列を保存し、field-inlineFormは単一のネストされたオブジェクトを保存します- フィールドの
slugは、^[a-z][a-z0-9_]*$に一致する snake_case である必要があります - 列挙型オプションの
slugは、^[a-z][a-z0-9_]*$に一致する snake_case である必要があります(指定されていない場合は名前から自動生成されます)
一括操作
create_data_sources_batchは、1 回のトランザクションで最大 20 個のデータソースを作成します- バッチ内では、
relationDataSourceIdに他のデータソースのslugを指定して参照します - バッチ外で作成された外部データソースには、
relationDataSourceIdとして UUID を使用します - データソースのスラッグはバッチ内で一意である必要があります(それ以外の場合は検証エラーになります)
- インラインの列挙型オプションは、フィールドごとに
enumOptions配列で定義します enumOptions内の各列挙型オプションには、name、slug、color、icon、sortOrderを指定できます- バッチ操作が失敗すると、すべての変更がロールバックされます(アトミックトランザクション)
- 関連するデータソースを作成するときは、API 呼び出しの回数を減らし、一貫性を確保するために、一括操作を使用してください
クエリ
- クエリ対象のデータソースを識別するには、
dataSourceId(UUID)を使用します columnsはフィールドスラッグをカンマ区切りで指定する文字列であり、配列ではありません- 集計では、
countの計算に必ずidフィールドを使用します - リレーションの展開:
relation_field(sub_field1, sub_field2)でネストされた列を選択します - スプレッド演算子:
...relation_field(alias:sub_field)でルートオブジェクトにフラット化します - 関連フィールドのフィルター:
rel_{{relation_slug}}/{{field_slug}} - 日付フィルターには、
today、this_month、last_30_daysなどのショートカット演算子があります
query_data_source の必須パラメーター
MCP ツールのスキーマでは、すべてのパラメーターが必須です(ほとんどのパラメーターには null を指定できます):
dataSourceId:string(必須、null 不可)columns:string | nullfilters:object | nullfilterKeyword:string | nullorderBy:array | nulllimit:number | null(デフォルト:1000)offset:number | nullfullCount:boolean | nullrecordId:string | null(ID で単一のレコードを取得)calculations:array | nulldistinctColumns:array | nullformulas:array | nullchildQueries:array | nullpivot:object | null
カスタムクエリのルール
- カスタムクエリの
queryの内容は、静的な SQL ではなく Handlebars SQL テンプレートとして扱います。 - 必要に応じて、テンプレート内の組み込みコンテキスト変数を使用します:
TENANT_ID、TENANT_SCHEMA、USER_ID、USER_EMAIL、USER_FIRSTNAME、USER_LASTNAME、USER_FULLNAME。 - 任意の実行時フィルタリングには
{{filter FILTERS.<slug> <column_expression>}}を使用します。実行時の値が指定されていない場合、ヘルパーは1=1に解決されます。 create_custom_query/update_custom_queryのfilters定義は、テンプレートでの使用方法に合わせます:- テンプレートでの使用方法:
FILTERS.<slug> - 実行時ルールのフィールド:
<slug> - フィルター定義のスラッグ:
<slug>
- テンプレートでの使用方法:
- 負荷の高いクエリを実行する前に、
simulate: trueを指定してEXPLAIN (ANALYZE, BUFFERS, FORMAT JSON)の出力を確認することを推奨します。 run_custom_queryの実行時制限を守ってください:最大 50,000 行、通常実行時のタイムアウトは 15 秒、シミュレーションモードのタイムアウトは 30 秒です。delete_custom_queryは完全削除ではなく、アーカイブ操作(論理削除)として使用します。- JSONB を使用するシンプルなデータソースでは、カスタムフィールドに
(table_alias."data"->>'field-uuid')::typeでアクセスします。
参考資料
- データソースクエリガイド —
query_data_sourceの最新のリファレンスです。列、フィルター、orderBy、ページネーション、計算、数式、ピボット、子クエリ、演算子の詳細を含みます。 - 数式設計ガイド(LLM) — クエリリクエストで使用する数式ペイロードの設計に関する最新のガイドです。
- カスタムクエリガイド —
get_custom_queries、get_custom_query_by_id、create_custom_query、update_custom_query、delete_custom_query、run_custom_queryのライフサイクル全体と実行に関するリファレンスです。
コメント
Markdown 対応