make-app-actions について
デスクトップ、タブレット、スマートフォンで Make のレコード操作を統合するスキルです。選択と単一レコード操作、権限の事前確認、一括編集、古い選択や未許可操作を防ぐ手順を定めます。
主な機能
- 01選択と操作のワークフロー
- 02権限に応じた単一レコード操作
- 03一括編集のライフサイクル
- 04Service 事前確認の契約
- 05古い選択への対策
活用シーン
- 01レコードの編集・削除操作の追加
- 02デスクトップ・タブレットの一括編集
- 03スマートフォンのカード操作の実装
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ qfeius/ make-platform-skills --skill make-app-actionsインストール後、Claude Code で/make-app-actionsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlreferences/action-permission-model.mdbatch-edit-flow.mdmobile-card-actions.mdpackage-integration.mdselection-and-operation-snapshot.mdservice-contract.mdtesting-and-pitfalls.md詳細
make-app-actions
レコード操作、権限の動作、行単位の事前チェック、単一レコードの編集/削除、デスクトップ/タブレットでの選択と一括編集を、統合された Make のレコード一覧機能として扱います。デスクトップ/タブレットの書き込み可能な一覧では、CanvasTable の選択と標準アクションバーを使用します。スマートフォンの一覧ではカードを使用し、ヘッドレスの単一レコードアクションモデルのみを再利用します。標準のスマートフォンエクスペリエンスでは、レコードの選択や一括操作は行いません。
この Skill は、利用側のアクションワークフローを担います。パッケージは再利用可能な選択/アクションモデルと標準 UI を担い、ホストはプリンシパルの状態、Service リクエスト、クエリーコンテキスト、フィールドコントロール、業務フィードバック、一覧の更新を担います。
Workflow
業務上の新規作成と保存/初回申請、プロセス状態および承認ロックの境界については、make-app-approval を使用します。この skill は引き続き通常のレコード操作を担います。その行単位の事前チェック、クイック編集、一括操作で、実際の承認状態/ロックを回避してはなりません。承認時の新規作成ボタンは、通常の選択アクションバーモデルから導出せず、タスク承認アクションもここでは実装しません。
- ホストの表示モード、パッケージマネージャー、Node/React/UI ライブラリの互換性、インストール済みの CanvasTable のバージョンとドキュメント、正規化済みのランタイムスキーマ、主要な権限モデル、レコードクエリの状態、Service のルート、編集/詳細画面、および関連テストを確認します。
@qfei-design/make-app-actions@^0.3.1をインストールします。デスクトップ/タブレットで CanvasTable を連携するには、@qfei-design/canvas-table@^1.3.1も必要です。 スマートフォン専用のヘッドレスアクションタスクでは、テーブル依存関係を追加しません。 まず関連するインストール済みの各package.jsonを読み、解決されたバージョンが必須の範囲を満たしていることを確認します。次にpackage.ai.jsonを読み、package.ai.json.readOrderを解析して、宣言されたすべてのファイルを順番に読み、公開エクスポートのみを使用します。パッケージ連携を変更する前にreferences/package-integration.mdを読みます。- デスクトップ/タブレットでは、パッケージアダプターに必要な公開選択スナップショット、
clearSelection、setRowColors、clearRowColorsAPI について、公開されている CanvasTable 1.3.1 の仕様を使用します。また、CanvasTable の公開ドキュメントでは、選択時およびホバー時の背景よりも業務用の行色が前面に表示されることが保証されていなければなりません。クリーンアップ API または優先順位に関する保証がない場合は、CanvasTable のアップグレードが必要であることを報告します。CanvasTable の仕組みにはcanvas-table-integrationを使用します。テーブル内部モジュールをディープインポートしたり、ホスト CSS で描画順を変更したりしないでください。 - デスクトップ/タブレットでは、複数選択を有効にし、すべての公開 Canvas 選択イベントを
resolveCanvasSelectedRecordSnapshotで正規化します。selectionIntentを保持し、選択件数と合計件数から全選択を推定しないでください。CanvasTable インスタンスの置き換え、および同一クエリ内でのtotalCountの変更には、references/selection-and-operation-snapshot.mdに記載されたライフサイクルを適用します。アクション所有の選択を置き換え後のインスタンスに再適用しないでください。サポート対象の Shift 範囲選択ジェスチャーは、インストール済み CanvasTable の公開仕様に従って最大 200 件に制限します。その仕様で上限を強制できない場合、ホスト側で内部の選択状態をエミュレートせず、機能上のブロッカーとして報告します。CanvasTable 1.3.1 のGroupTableComponentは Shift 範囲選択に対応していません。インストール済みのグループテーブルの公開仕様で明示的に対応が追加されていない限り、ホスト側で Shift 範囲選択をエミュレートしないでください。 新しい App では、Ant Design のホストも含め、パッケージの汎用RecordSelectionActionBarをホストのActionButton/IconButtonラッパーおよびデフォルトの Lucide アイコンとともにMakeAppActionComponents経由で描画します。公開されている AntD アクションバーフアダプターには Ant Design のアイコンが組み込まれています。依頼されたアイコン対応の範囲外にある既存の連携では、これをそのまま使用してください。 - 現在キャッシュされているプリンシパルスナップショットを使って、単一編集、単一削除、デスクトップ/タブレットでの複数レコード一括編集アクションを構築します。
data.record.update、data.record.delete、data.record.bulkUpdateは独立したままにします。 - デスクトップ/タブレットでは、アクションのクリック時に、解決済みの選択内容とパッケージのバッチ上限を検証します。スマートフォンでは、クリックされた/現在のレコードのみを解決します。選択やバッチ上限は適用しません。該当するパッケージのローカル行検証を行ってから、非同期の事前チェックを開始する前に、変更不可の操作スナップショットを 1 つ作成して固定します。
- 単一編集または一括編集の UI を開く前に、その完全な固定済み対象をホストの Service 事前チェック 1 回に渡します。UI から Make を呼び出したり、拒否された複数レコードのリクエストを診断用リクエストに分割したりしないでください。明示的な選択の場合、ドキュメントに記載された HTTP 200 の業務上の拒否から得た権威ある
noPermissionRecordIdsを、対象となる行全体へのエラーを示す赤色表示に正確に対応づけます。全選択が拒否された場合は行 ID がないため、トースト通知のみとします。事前チェック/一括処理で完了した HTTP エラーを保持します。明示的選択モードでは、オブジェクト/操作の拒否は行コード20000032ではなく、reason: "permission_denied"を伴う HTTP 403 の場合があります。 - 一括編集では、ランタイムの読み取り/更新権限とパッケージの機能に基づいてフィールドを絞り込みます。新しい Make App ホストでは、デフォルトのフィールドアイコン仕様を満たすため、選択したデザインシステムから注入する
Modal、FieldSelect、ModeControlを使用して、パッケージの公開汎用RecordBatchEditModalを使います。 Ant Design のホストも対象です。0.3.1のAntdRecordBatchEditModalには、公開されたFieldSelectのカスタマイズ用エントリーポイントがありません。 AntD を別のデザインシステムと組み合わせたり、パッケージのモーダルをコピーしたりしないでください。 ホストは、注入されたポップアップがクリッピングする祖先要素の外側かつ親ダイアログより前面に表示され、フォーカス、Escape、外側クリックの動作が維持されるよう、インストール済みデザインシステムの公開オーバーレイ API を使用します。 デスクトップ/タブレットの一括編集では、フィールドの選択肢に限り、各フィールド名の前にデフォルトの Make のフィールド型アイコンを表示します。値、モード、候補オプションにはフィールドアイコンを付けません。 送信時には固定済みの操作スナップショットを再利用します。 - ホストから Service の一括リクエストを 1 回送信します。Service は Make の
/data/v1/fieldリクエストを 1 回送信します。単一レコード更新をループして実行したり、Make のデフォルト経路でrunRecordBatchMutationを使用したりしないでください。 - 選択、オブジェクト、アクセス権、またはクエリコンテキストが変更されたら、古い事前チェックと送信を無効化します。キーワード、フィルター、ソート、グループ、またはオブジェクトのコンテキストが変更されたら、選択をクリアします。適用済みクエリへの切り替えに成功した場合は選択をクリアします。下書きの編集や保存/クエリの失敗によって、アクションの対象を再定義しないでください。
- スマートフォンのカードと詳細タスクページについては、
references/mobile-card-actions.mdを読みます。クリックされた/現在のレコードにはパッケージルートのヘッドレスコアを使用し、CanvasTable や選択アクションバーはマウントせず、レコードの複数選択や一括アクションを公開しないでください。カードアクションと詳細アクションは、同じ 1 レコードのライフサイクルを共有する別々の画面です。どちらももう一方の代わりにはなりません。 - デスクトップ/タブレットでは、選択バーが編集/削除アクションを担う場合、詳細画面から編集/削除コマンドを削除します。詳細画面は表示アクションとして開いたままにします。
- ワークフローの完了を報告する前に、
references/testing-and-pitfalls.mdのテストを追加します。
トピック別リファレンスマップ
| タスク/トピック | 参照先 |
|---|---|
| パッケージのインストール、UI ライブラリとの互換性、公開インポート、ホスト/パッケージの境界 | references/package-integration.md |
| 独立した操作権限、キャッシュされたプリンシパル、アクションの表示、拒否時の UI | references/action-permission-model.md |
| Canvas の選択意図、200 件の上限、クエリの識別情報、不変の操作スナップショット | references/selection-and-operation-snapshot.md |
| UI-Service の事前チェックと一括ルート、Make のペイロード、エラー、呼び出し回数の不変条件 | references/service-contract.md |
| 単一アクションの動作、一括編集モーダルのフィールド、送信のライフサイクル、古い選択に対する安全性 | references/batch-edit-flow.md |
| スマートフォンのカードと詳細画面での単一編集/削除、レコード選択や一括操作は不可 | references/mobile-card-actions.md |
| TDD マトリクス、統合チェック、競合、準備完了を妨げる要因 | references/testing-and-pitfalls.md |
| Canvas の選択イベント、clearSelection、行の色、Shift による選択 | canvas-table-integration を使用 |
| プリンシパルの IAM エンドポイント、権限リソースの照合、フィールドアクセス | make-app-permission を使用 |
| サービスのレイヤー構成、アダプター、検証、ログ、リクエストコンテキスト | make-app-service を使用 |
| ツールバー/テーブルの配置、Drawer のレイアウト、フィールドコントロール | makeui を使用 |
| グローバルフィルターの式と適用済みのフィルター状態 | make-app-filter を使用 |
| 適用済みのソート状態 | make-app-sort を使用 |
グループパスと groupFilter の組み合わせ | make-app-group を使用 |
絶対に守るべき不変条件
- インストール済みの
package.jsonを、パッケージバージョンの正式な情報源として扱ってください。このスキルでは、package.ai.jsonを読む前に@qfei-design/make-app-actions@^0.3.1を解決してください。公開されている0.3.1のマニフェストには古い0.3.0のバージョンとインストール設定が含まれており、インテグレーションをダウングレードしてはなりません。 - デスクトップ/タブレットでは、公開されている行カラーの優先順位と
clearRowColorsの契約に従い、@qfei-design/canvas-table@^1.3.1を解決してください。書き込み可能な CanvasTable のレコードアクション一覧で1.3.0を使用せず、不足する動作をホストコードで模倣しないでください。スマートフォンのみで、ヘッドレスの単一レコードアクションをインテグレーションする場合、CanvasTable は不要です。 - デスクトップ/タブレットの Make CanvasTable レコード一覧では、デフォルトで行を選択でき、標準のアクションバーが表示されます。読み取り専用がユーザーの現在の書き込み権限がないことだけを意味するのではなく、オブジェクト/製品の機能である場合に限り、厳密な読み取り専用一覧では明示的に無効化できます。アクションがないユーザーにもスキーム 2 が適用されます。
- デスクトップ/タブレットでは、レコードがちょうど 1 件選択されている場合、編集と削除をそれぞれ独立した権限に従って表示します。2 件以上選択されている場合、バッチ編集を表示するかどうかは
data.record.bulkUpdateと、利用可能なバッチ編集可能フィールドだけに基づいて判断します。 - デスクトップ/タブレットでは、選択中のアクションがない場合もスキーム 2 を維持してください。選択件数、ロックアイコン、
暂无可用的操作、閉じるコントロールを表示します。 - スマートフォンのレコード一覧ではカードを使用し、CanvasTable は使用しません。レコードの複数選択、全選択、Shift 選択、選択アクションバー、バッチ編集、その他のバッチ操作は提供しません。これはフォームフィールドの複数選択には影響しません。
- スマートフォンのカードでは、パッケージのヘッドレスコアを通じて、クリックされたレコードのみを解決します。編集と削除の単一アクションをそれぞれ独立して表示できますが、古いデスクトップの選択スナップショットから対象を決めてはなりません。デスクトップの CanvasTable をアンマウントするとアクションの選択が解除され、戻ったときには新しいインスタンスが空の状態で開始します。
- アクションのクリックと送信には、現在キャッシュされているプリンシパル権限を使用してください。操作ごとにプリンシパルを再取得しないでください。
- パッケージのローカル行チェックは即時フィードバックとして扱い、最終的な認可として扱わないでください。行の事前チェックと最終書き込みエンドポイントが正式な判定元です。
- 事前チェックの前に、対象モード、ID または除外リスト、選択件数、オブジェクト/エンティティの識別情報、
filter、groupFilterを固定してください。事前チェックと変更には同じスナップショットを使用してください。ドキュメントにないsnapshotToken/不透明なトークンを作成したり、それに置き換えたりしないでください。インストール済みホストの Service 契約で明示的に定義され、検証されるトークンのみ使用してください。 filterとgroupFilterは分離したまま変更せずに保持してください。これらが受け付けられるのは全選択の対象に限られ、結合は UI や Service の文字列書き換えではなく、バックエンドのセマンティクスに従います。- 明示的な選択リストと除外リストでは、それぞれ最大 200 件の ID を指定できます。明示的な選択が 200 件を超える場合はモーダルを開かずにブロックし、ユーザーが行を選択解除できるよう選択状態を維持してください。
- サポートされる Shift 範囲選択の 1 回の操作で選択できるレコードは最大 200 件です。この制限はインストール済み CanvasTable のパブリック契約を通じて適用してください。その機能が利用できない場合、ホスト独自のキーボード処理や範囲選択の内部実装を追加しないでください。
- 事前チェックで HTTP 200 が返され、権威ある
noPermissionRecordIdsを含む業務上の拒否が示された場合、アクションをブロックし、標準の拒否トーストを表示し、該当する正確な行だけにホストのエラー赤色スタイルを適用します。拒否された行が選択中またはホバー中でも、この意味を持つ色が見える状態を維持してください。アクション所有のコマンドカラーはclearRowColorsでクリアし、クリーンアップにsetRowColors(rowKeys, undefined)を使用しないでください。全選択で 403 が返された場合は行 ID が返されないため、同じトーストを表示し、ハイライトする行を決して捏造しないでください。 - 1 つのアクションで発生させる Make の権限事前チェックリクエストは最大 1 回、最終 Make 変更リクエストも最大 1 回です。ID ごとの診断やレコードごとの更新ループは使用しないでください。
- 選択/クエリの競合によって、古い UI を開いたり、古いフィードバックを適用したり、新しい選択をクリアしたり、事前チェック済みの対象と異なる対象を送信したりしないでください。
- CanvasTable インスタンスの置き換え時には、アクション所有の選択をちょうど 1 回クリアしてください。同じクエリで合計件数が増えた場合は、現在のパブリックスナップショットを再正規化します。合計件数が減った場合は、インストール済みパブリック契約の
clearSelection()を通じて選択をクリアします。 - バッチフィールドには、ランタイムスキーマとフィールド権限を使用してください。サポートされていない複雑なフィールドを単純な入力に置き換えないでください。
- 共有バッチモーダルには、自動化フローのコントロールを含めません。
- Arco、shadcn/ui、その他 AntD 以外のホストに Ant Design を導入しないでください。ホストコンポーネントを注入して、パッケージの汎用
RecordBatchEditModalを使用してください。ホスト側でパッケージのモーダル状態や検証動作を複製してはなりません。
引き継ぎ
canvas-table-integrationとの関係:公開されている CanvasTable の選択/ハイライトの仕組みを担当します。この Skill は、それらのスナップショットがアクション状態と書き込みにどう反映されるかを担当します。make-app-permissionとの関係:プリンシパルの読み込みと権限の照合を担当します。この Skill はキャッシュ済みの結果を使用し、独立したアクションのセマンティクスを担当します。make-app-serviceとの関係:この Skill はアクションリクエストの契約とタイミングを定義します。Service は厳格なパーサー、Make アダプター、ログインコンテキストの転送、ログ、テストを担当します。makeuiとの関係:周囲のリスト、選定されたコンポーネントライブラリ、Drawer、タスクルート、カードアクションのビジュアルを担当します。この Skill は、パッケージのアクション状態、スマートフォンでの単一レコードのアクションライフサイクル、デスクトップ/タブレットの標準的な下部アクションバーの配置、サポート対象のモーダルアダプター、アクションライフサイクルを担当します。- フィルター/ソート/グループ化の Skill との関係:最後に正常に適用されたクエリコンテキストを使用します。正常に適用されたクエリの変更は、選択を解除し、保留中のアクション処理を無効化します。ドラフトの編集や保存/クエリの失敗では、現在の選択が維持されます。
groupFilterの合成はmake-app-groupが担当します。