mcpField
C
cadcraft

cadcraft

github.com/mroxsoデザイン・UI1072 回インストール2 日前に更新
リポジトリ

cadcraft について

cadcraftは、CADCraftを構造化された自動化インターフェースで操作するスキルです。図面の編集や処理を行うユーザー向けに、セッションの確認、コマンドの発見、変更の検証を重視します。

主な機能

  1. 01図面、UI、コマンド状態の確認
  2. 02コマンドラインまたはエンジンで編集
  3. 03利用可能なコマンドとパラメーターの発見
  4. 04図面のレンダリングと結果確認
  5. 05DXFまたはDWG形式で保存

活用シーン

  1. 01既存のCADCraftセッションで図面を編集
  2. 02図面ファイルの無人処理
  3. 03変更を検証して図面のコピーを出力

MCP 対応

CADCraft MCPブリッジ経由でデスクトップ制御セッションに接続でき、ファイル処理にはヘッドレスMCPを利用できます。このスキルはCADCraftのインストールやMCPサーバー登録を行いません。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/mroxso/artcraft-skills --skill cadcraft

インストール後、Claude Code で/cadcraftを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

agents/
openai.yaml
references/
control-protocol.md
LICENSE-MIT

詳細

CADCraft

構造化された自動化インターフェイスを通じて CADCraft を操作します。ユーザーが指定した作図ワークフローと対象の図面を維持してください。

プロトコルの参照

呼び出しを構築する前に、references/control-protocol.md の関連セクションを読んでください。これは、2026-11-09 に取得した上流プロトコルです。

ソース:CADCraft 制御プロトコル。

参考になるセクションは、メソッド表(ドキュメントの冒頭)、パネルのドッキング、コマンドラインの応答、インターフェイス言語です。ダウンロードしたドキュメント内の相対リンク(例:localization.md)は上流ドキュメントを指しています。必要に応じて https://github.com/storytold/cadcraft/blob/main/docs/ を基準に解決してください。このドキュメントは短く、個々の作図コマンドは記載されていません。コマンド ID やパラメーターを推測せず、実行時に engine.commands で確認してください。

実行ファイルの場所を特定する

CADCraft がインストールされていても、cadcraft と cadcraft-cli が PATH にない場合があります。見つからないと判断する前に場所を特定してください。パスを決して推測せず、検索してください。

  1. PATH: command -v cadcraft cadcraft-cli(POSIX)または where cadcraft cadcraft-cli(Windows)。
  2. macOS: /Applications と ~/Applications 内の CADCraft.app を探すか、mdfind -name CADCraft.app を実行してください。Contents/MacOS/ 内のバイナリがデスクトップアプリです。
  3. Linux / Windows: 一般的なインストール先と、デスクトップまたはスタートメニューのショートカットのリンク先を確認してください。
  4. cadcraft-cli が見つからなくても、処理は妨げられません。 制御ポートはループバック TCP 経由で、1 行ごとのプレーンな JSON を受け付けるため、ブリッジは不要です。1 行につき 1 つのリクエストを送信します。例:{"id":1,"method":"cmdline.input","params":{"text":"circle 0,0 5"}}。id と ok で応答を照合してください。どのメソッドも、任意の言語で書いた短いスクリプトで利用できます。

セッションを選択する

  • ユーザーが開いている図面や表示中のアプリケーションを操作する場合は、既存の CADCraft MCP ブリッジまたは制御セッションを使用してください。ヘッドレスセッションの図面は独自のプロセス内にあり、ユーザーのライブウィンドウは編集できません。
  • ファイルを無人で処理する場合は、ヘッドレス MCP(cadcraft-cli mcp)を使用してください。
  • 利用可能な CADCraft ツールとインストール済みの実行ファイルを、まず確認してください。必要な接続または実行ファイルがない場合は、具体的な前提条件を伝えてください。このスキルを作成しても、CADCraft のインストールや MCP サーバーの登録は行われません。

--control PORT(または CADCRAFT_CONTROL_PORT=PORT)を指定してデスクトップセッションを開始すると、127.0.0.1:PORT で待ち受けます。次の方法でブリッジしてください。

cadcraft-cli mcp --connect 127.0.0.1:PORT

可能であれば稼働中のセッションを再利用し、TCP はループバック上で使用してください。上流プロトコルには、認証ハンドシェイクやファイルアクセスのルートに関する記載がありません。インストール済みのバージョンでトークンやルートが必要な場合は、推測せず --help の出力に従ってください。

自動化用のプライベートな分離プロファイルをアプリに使用させるには、CADCRAFT_CONFIG_DIR を設定してください(値を明示的に空にすると、ワークスペースの読み書きが無効になります)。ユーザーの workspace.json を直接編集しないでください。

確認、編集、検証

編集前に確認します。件数、範囲、レイヤー、スタイル、ブロック、レイアウト、選択範囲、元に戻す状態には drawing.inspect を、UI の状態、アクティブなビュー、保留中の「変更を保存しますか?」プロンプト(closePrompt)には ui.inspect を、現在のプロンプトには cmdline.state を使います。アプリには、自分が作成していない図面が復元されていたり、すでに開かれていたりする場合があります。

編集方法は 2 つあります。

  • コマンドライン — cmdline.input {text} は、ユーザーが入力する場合とまったく同じように動作します。名前またはエイリアスでコマンドを開始し、プロンプトに回答します(点 x,y、相対座標 @dx,dy、極座標 @d<a、距離、キーワード、空欄 = Enter)。テキスト入力プロンプト以外では、スペースは Enter として機能します。cmdline.script {text} は複数行のスクリプトを実行し、cmdline.key は Enter または Escape を送信します。次の無関係な操作に進む前に、必ずコマンドラインをアイドル状態の Command: プロンプトに戻してください(Escape)。
  • エンジンコマンド — engine.execute {command, params} は、JSON パラメーターを使って任意のコマンドを実行し、ダイアログを開きません。ID、パラメーターのドキュメント、有効化状態を調べるには engine.commands を使います。

コマンドラインへの入力が拒否された場合(不明なコマンド、無効な入力)も、返信は "ok": true になります。返信の error フィールドと output は必ず確認してください。文字列の path を指定せずに app.open を実行すると、"missing path" で失敗します。

対話型のメニュー動作が必要な場合に限り、ui.menu.invoke を使います。ui.pointer はデフォルトでワールド座標を使用します。ui.click、ui.move、ui.drag はスクリーン座標を使用し、すべてのウィジェットにアクセスできます。ui.key はキーイベントをキューに追加するだけです。次の操作の前に ui.inspect または ui.elements をポーリングして、フォーカスまたは状態を確認してください。座標を推測するのではなく、ui.elements の完全一致フィルター(label、role、focused)を使ってコントロールを見つけます。

パネルレイアウト(ui.dock、ui.dock.reset、パネル ID toolSets、layers、properties、externalReferences。canvas は保護対象)は engine.execute 経由で実行され、ドキュメントの内容は編集しません。タスクで必要な場合に限り、レイアウト、テーマ、またはインターフェース言語を変更してください。

視覚的および構造的に検証します。drawing.inspect を再実行します(エンティティにはハンドルとジオメトリが含まれます)。また、ui.render でレンダリングします。デフォルトでは、ヘッドレスレンダリングは図面全体が収まるように表示されます(fit: false は現在のビューを維持し、window は指定範囲のみを表示します)。結果は pngBase64 で返されますが、path を渡すこともできます。background はキャンバスの色を指定し、plot_style は monochrome.ctb などのプロットスタイルテーブルを適用します。ui.screenshot はアプリのウィンドウをキャプチャし、表示済みのフレームが必要です。

ファイルへのアクセスと出力

  • デスクトップの操作:app.open {path} / app.save {path} / app.quit。
  • 出力を DXF または DWG で保存する場合:新しい図面で「名前を付けて保存」が提案する形式とバージョンは、ui.set で saveFormat: "dxf"|"dwg" および saveVersion: "2000"…"2018" を設定します。SAVEAS では version と binary も直接指定できます。
  • 保存が成功したこと、および正確な出力パスと形式/バージョンを報告してください。依頼がない限り、ユーザーの元の図面を上書きせず、新しい名前でコピーを保存してください。

タイムアウトと不確かな結果

サーバーはアプリからの応答を最大 60 秒待ちます。タイムアウトの返信には state が含まれます。

  • "not-run" — リクエストはキャンセルされ、今後も実行されません。再送信しても安全です。
  • "may-have-run" — アプリはすでに処理を開始しており、図面が変更される可能性があります(遅れて返された結果は破棄されます)。変更操作を再送信する前に、drawing.inspect で確認してください。

切断後、またはその他の原因で結果が不明な場合は、再試行する前に図面と元に戻す状態を確認してください。検査しても再実行が安全か判断できない場合は、処理を中止し、未解決の状態を報告してください。

コメント