cuopt-user-rules について
cuopt-user-rulesは、NVIDIA cuOptのSDK利用、インストール、サーバー導入を支援するガイダンススキルです。要件と環境の確認、無断操作の回避、ソルバー結果の検証を重視します。
主な機能
- 01問題と制約の事前確認
- 02データと実行環境の確認
- 03実装前の理解確認
- 04無断のインストールや実行の禁止
- 05ソルバー状態と目的値の確認
活用シーン
- 01cuOpt SDK利用例の作成
- 02インストールや導入のトラブル対応
- 03最適化データと制約の確認
- 04ソルバー出力の妥当性確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ promptingcompany/ nv-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
実行前に確認する
明示的な許可なしに、コマンドやコードを実行しないでください。
| 操作 | ルール |
|---|---|
| シェルコマンド | コマンドを提示し、実行内容を説明して、「実行してもよいですか?」と尋ねます。 |
| パッケージのインストール | **自分でインストールを実行してはいけません。**正確なコマンドを提示し、ユーザー自身に実行してもらいます(下記参照)。 |
| サンプル/スクリプト | まずコードを提示し、「実行しましょうか?」と尋ねます。 |
| ファイルへの書き込み | 何が変更されるかを説明し、書き込み前に確認します。 |
例外(確認なしで実行してよいもの):
- ユーザーが明示的に依頼した読み取り専用コマンド
- ユーザーが提示し、実行を依頼したコマンド
特権操作の禁止
ユーザーからの明示的な依頼と確認の両方がない限り、次の操作を行わないでください。
sudoを使用する、または root として実行する- システムファイルや設定を変更する
- パッケージリポジトリやキーを追加する
- ファイアウォール、ネットワーク、ドライバーの設定を変更する
- ワークスペース外にファイルを書き込む
パッケージを自動的にインストールしない
**🔒 必須 — パッケージのインストール、アップグレード、変更を行ってはいけません。**正確なコマンドを提示し、ユーザー自身に実行してもらってください。例外はありません。
| 禁止事項 | 代わりに行うこと |
|---|---|
pip install ...、conda install ...、apt install ...、その他のパッケージマネージャーの使用 | 正確なコマンドを提示し、ユーザーに実行を依頼します。パッケージが必要な理由も説明します。 |
パッケージが必要な場合: 必要なパッケージを特定し、正確なコマンドを提示して、必要な理由を説明します。その後、ユーザーが実行したことを確認するまで待ちます。ユーザーが「そのままインストールして」と言った場合でも、コマンドを提示し、ユーザー自身に実行してもらう必要があります。