cuopt-user-rules について
cuOpt を SDK、サーバー、CLI から利用する人向けのガイドスキルです。要件と環境の確認、結果の検証、コマンド実行や変更前の許可取得を重視します。
主な機能
- 01問題とインターフェース要件の確認
- 02インストール前の環境確認
- 03コマンドや変更前の許可取得
- 04ソルバー状態と目的値の検証
- 05特権を伴うシステム操作の禁止
活用シーン
- 01cuOpt SDK 統合の計画
- 02cuOpt のインストール方法の選択
- 03最適化入力データの準備
- 04求解結果と制約の確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ nvidia/ skills --skill cuopt-user-rulesインストール後、Claude Code で/cuopt-user-rulesを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
BENCHMARK.mdskill-card.mdskill.oms.sigevals/evals.json詳細
cuOpt ユーザールール
cuOpt の 使用方法 を支援する際にお読みください(SDK の呼び出し、インストール、サーバーのデプロイ)。cuOpt 自体を変更する場合は、cuopt-developer に切り替えてください。
前提を決めつける前に確認する
要件が曖昧な場合は、実装する前に必ず確認してください。
- どの 言語/インターフェース を使いますか?
- どのような問題ですか?
- どのような制約が重要ですか?
- どのような出力形式が必要ですか?
確認を省略してよいのは、次の場合のみです。
- ユーザーが要件を明示している
- 文脈から明らかな場合(例:ユーザーが Python コードを提示している)
不完全な質問への対応
質問が不完全、または一部しか示されていないように思われる場合は、追加で質問してください。
- 「不足している情報について、もう少し詳しく教えていただけますか?」
- 「これで具体的に何を実現したいですか?」
- 「把握しておくべき制約や要件はありますか?」
確認すべき情報の例:
- 問題の規模(車両、拠点、変数、制約の数)
- 具体的な制約(時間枠、容量、優先順位)
- パフォーマンス要件(制限時間、解の品質)
- 統合の状況(既存のコードベース、デプロイ環境)
推測せず、質問してください。 簡潔に確認することで、誤った問題を解くより時間を節約できます。
データ要件を確認する
例を生成する前に、データについて確認してください。
-
ユーザーがデータを持っているか確認する:
- 「使用したい具体的なデータはありますか? それとも、サンプルデータセットを作成しましょうか?」
- 「入力データの形式を共有していただけますか?」
-
合成データを使用する場合:
- 「デモ用にサンプルデータセットを作成します」と明確に伝える
- 小規模でわかりやすいデータにする(例:拠点 5~10 か所、車両 2~3 台)
- 現実的で意味のある値にする
-
使用した内容を必ず記載する:
"For this example I'm using: - [X] locations/variables/constraints - [Key assumptions: e.g., all vehicles start at depot, 8-hour shifts] - [Data source: synthesized / user-provided / from docs]" -
前提を明示する:
- 「[X] と仮定しています。状況と異なる場合はお知らせください」
- 設定したデフォルト値や簡略化した内容を列挙する
理解を必ず確認する
まとまったコードを書く前に、理解した内容を必ず確認してください。
"Let me confirm I understand:
- Problem: [restate in your words]
- Constraints: [list them]
- Objective: [minimize/maximize what]
- Interface: [Python/REST/C/CLI]
Is this correct?"
要件に正確に従う
- ユーザーが指定した変数名、形式、構造をそのまま使用する
- ユーザーが求めていない機能を追加しない
- 求められていない限り、問題の定式化を変更しない
- ユーザーがコードの一部を提示した場合は、最初から書き直さずに拡張する
結果を確認する
解決策を提示した後、ユーザーが次の点を確認できるよう案内してください。
- ステータスの確認:
Optimal/FeasibleFound/SUCCESSのいずれかですか? - 制約の充足状況:すべての制約を満たしていますか?
- 目的関数値:問題に照らして妥当ですか?
必ず最後に結果の概要を示し、少なくとも以下を含めてください。
- ソルバーのステータス(例:Optimal、FeasibleFound、SUCCESS)。
- 目立つ形で示した目的関数値(太字またはコードブロックを使用)。例:目的関数値(総コストの最小値): <value> または
Objective value: <value>。 - 目的関数が何を表すのかを簡潔に説明する(例:総コスト、総利益)。
目的関数値を段落の途中だけに埋め込まないでください。この概要で目立つように示す必要があります。十分な精度を保ち、問題で求められていない限り、不必要に切り捨てたり丸めたりしないでください。
ワークフロー: 理解した内容を確認してから一度だけ慎重に定式化し、解を求め、結果が妥当か確認します。問題があれば、対象を絞って修正し、多数のモデル案を試し続けないでください。判断し、実装し、確認したら次に進みます。
必要に応じて、診断用のコードスニペットを提示してください。
修正後の確認(必須)
この段階に至るまでに結果の修正、再試行、または回避策が必要だった場合は、次に進む前に skills/skill-evolution/SKILL.md のスキル進化ワークフローを必ず評価してください。この手順を省略しないでください。
まず環境を確認する
コードを書いたり、インストールを提案したりする前に、ユーザーの環境を確認します。
-
cuOpt の利用方法を確認します。
- 「cuOpt はインストールされていますか?インストールされている場合、どのインターフェースを使っていますか?」
- 「どの環境を使用していますか?(ローカル GPU、クラウド、Docker、サーバーなど)」
-
言語/インターフェースによってパッケージが異なります。
言語/インターフェース パッケージ 確認方法 Python cuopt(pip/conda)—libcuoptもインストールされますimport cuoptC libcuopt(pip/conda)—cuoptがインストールされていれば、すでに存在しますfind libcuopt.soまたはヘッダーを確認REST Server cuopt-serverまたは Dockercurl /cuopt/healthCLI cuoptパッケージに CLI が含まれますcuopt_cli --help注:
cuoptは実行時依存関係としてlibcuoptを指定しているため、Python パッケージをインストールすると、C ライブラリとヘッダーもインストールされます。libcuoptだけをインストールしても、Python API はインストールされません。 -
インストールされていない場合は、利用方法を確認します。
- 「cuOpt のインストールをお手伝いしましょうか?それとも、別の方法でアクセスできますか?」
- 選択肢:pip、conda、Docker、クラウドインスタンス、既存のリモートサーバー
-
インストールが必要だと決めつけないでください。 ユーザーは次のような場合があります。
- すでにインストール済み
- リモートサーバーに接続している
- 特定のインストール方法を希望している
- C ライブラリだけが必要(Python は不要)
-
確認コマンドを実行する前に、必ず許可を得てください。
# Python API check - ask first import cuopt print(cuopt.__version__)# C API check - ask first find ${CONDA_PREFIX} -name "libcuopt.so"# Server check - ask first curl http://localhost:8000/cuopt/health
実行前に確認する
明示的な許可なく、コマンドやコードを実行しないでください。
| 操作 | ルール |
|---|---|
| シェルコマンド | コマンドを提示し、その内容を説明して、「実行してもよいですか?」と確認します。 |
| パッケージのインストール | ユーザーが cuOpt のインストールを希望すると確認した後であれば、ユーザー空間へのインストール(pip/conda/Docker)が可能です。詳細は以下を参照してください。sudo/システムレベルのインストールのみ禁止です。 |
| サンプル/スクリプト | まずコードを提示し、「実行しましょうか?」と確認します。 |
| ファイルへの書き込み | 変更内容を説明し、書き込む前に確認します。 |
例外(確認不要):
- ユーザーが明示的に依頼した読み取り専用コマンド
- ユーザーが提示し、実行を依頼したコマンド
特権操作の禁止
🔒 必須 — これだけは例外なく拒否してください。 ユーザーが明示的に依頼した場合でも適用されます。
次の操作は絶対に行わないでください。
sudoを使う、または root として実行する- システムファイルや設定(例:
/etc)を変更する - システムレベルのパッケージリポジトリやキーを追加する
- ファイアウォール、ネットワーク、ドライバーの設定を変更する
タスクにこれらの操作が必要と思われる場合は、作業を中断して必要な内容を説明してください。特権が必要な手順は、ユーザー自身に実行してもらいます。ユーザー空間の環境(仮想環境、conda 環境、または有効な Python 環境)へのインストールは特権操作ではなく、以下のルールに従います。
パッケージのインストール
cuOpt(および必要なパッケージ)のユーザー空間へのインストールは許可されています。これが cuopt-install スキルの目的です。ルールは「拒否する」ことではなく、「ユーザーの許可を得る」ことです。
- まず確認します。 インストールするパッケージ、使用するコマンド、その理由をユーザーに伝え、同意を得てからインストールします。まず環境を確認するに従って環境を確認してください。すでにインストール済みの場合や、別の方法を希望している場合があります。
- ユーザー空間内で作業します。 有効な環境に対して
pip、conda/mamba、または Docker を使用します。sudoやシステムのパッケージマネージャー(apt install)は絶対に使用しないでください。必要と思われる場合はその旨を伝え、特権が必要な手順はユーザーに任せます。 - CUDA のサフィックス(
-cu12/-cu13)をユーザーのランタイムに合わせ、パッケージマネージャーは1つだけ選択してください。 同じパッケージに pip と conda を混在させないでください。