rust-router について
Rust のエラー、概念、アプリケーション領域に応じて関連スキルへ案内するルーティングスキルです。段階的な調査を促し、領域キーワードがある場合は言語層と領域層の両方のスキルを読み込むよう指定します。
主な機能
- 01コンパイルエラーや概念の振り分け
- 02質問を認知レイヤーに対応付け
- 03指定領域で関連スキルを併用
- 04比較時のネゴシエーション開始
- 05クレートやタスク別の質問を案内
活用シーン
- 01Rust コンパイルエラーに対応するスキルの特定
- 02領域制約を踏まえた設計質問の検討
- 03比較やベストプラクティス質問の振り分け
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ actionbook/ rust-skills --skill rust-routerインストール後、Claude Code で/rust-routerを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
examples/workflow.mdintegrations/os-checker.mdpatterns/negotiation.md詳細
Rust 質問ルーター
バージョン: 2.0.0 | 最終更新日: 2025-01-22
v2.0: コンテキストを最適化しました。詳細な例はサブファイルに移動しました。
メタ認知フレームワーク
基本原則
直接回答しないでください。まず認知レイヤーをたどってください。
Layer 3: Domain Constraints (WHY)
├── Business rules, regulatory requirements
├── domain-fintech, domain-web, domain-cli, etc.
└── "Why is it designed this way?"
Layer 2: Design Choices (WHAT)
├── Architecture patterns, DDD concepts
├── m09-m15 skills
└── "What pattern should I use?"
Layer 1: Language Mechanics (HOW)
├── Ownership, borrowing, lifetimes, traits
├── m01-m07 skills
└── "How do I implement this in Rust?"
エントリーポイントによるルーティング
| ユーザーのシグナル | エントリーレイヤー | 方向 | 最初のスキル |
|---|---|---|---|
| E0xxx エラー | レイヤー 1 | 上にたどる ↑ | m01-m07 |
| コンパイルエラー | レイヤー 1 | 上にたどる ↑ | 下記のエラーテーブル |
| 「設計方法は……」 | レイヤー 2 | L3 を確認してから下へ ↓ | m09-domain |
| 「[domain] アプリを構築」 | レイヤー 3 | 下にたどる ↓ | domain-* |
| 「ベストプラクティス……」 | レイヤー 2 | 両方向 | m09-m15 |
| パフォーマンスの問題 | レイヤー 1 → 2 | 上に進んでから下へ | m10-performance |
重要:2 つのスキルを読み込む
ドメインのキーワードが含まれる場合、必ず両方のスキルを読み込んでください:
| ドメインのキーワード | L1 スキル | L3 スキル |
|---|---|---|
| Web API、HTTP、axum、handler | m07-concurrency | domain-web |
| 取引、決済、trading、payment | m01-ownership | domain-fintech |
| CLI、terminal、clap | m07-concurrency | domain-cli |
| kubernetes、grpc、microservice | m07-concurrency | domain-cloud-native |
| embedded、no_std、MCU | m02-resource | domain-embedded |
CLAUDE への指示
重要:ネゴシエーションプロトコルのトリガー
回答する前に、ネゴシエーションが必要かどうかを確認してください:
| クエリに含まれる語句 | アクション |
|---|---|
| 「比較」、「対比」、「compare」、「vs」、「versus」 | 必ずネゴシエーションを行う |
| 「ベストプラクティス」、「best practice」 | 必ずネゴシエーションを行う |
| ドメイン + エラー(例:「取引システム E0382」) | 必ずネゴシエーションを行う |
| スコープが曖昧(例:「tokio のパフォーマンス」) | ネゴシエーションを行うことを推奨 |
ネゴシエーションが必要な場合、次を含めてください:
## Negotiation Analysis
**Query Type:** [Comparative | Cross-domain | Synthesis | Ambiguous]
**Negotiation:** Enabled
### Source: [Agent/Skill Name]
**Confidence:** HIGH | MEDIUM | LOW | UNCERTAIN
**Gaps:** [What's missing]
## Synthesized Answer
[Answer]
**Overall Confidence:** [Level]
**Disclosed Gaps:** [Gaps user should know]
詳細なプロトコル:
patterns/negotiation.md
デフォルトのプロジェクト設定
新しい Rust プロジェクトまたは Cargo.toml ファイルを作成する場合は、必ず次を使用してください:
[package]
edition = "2024" # ALWAYS use latest stable edition
rust-version = "1.85"
[lints.rust]
unsafe_code = "warn"
[lints.clippy]
all = "warn"
pedantic = "warn"
レイヤー 1 のスキル(言語の仕組み)
| パターン | 振り分け先 |
|---|---|
| move、borrow、lifetime、E0382、E0597 | m01-ownership |
| Box、Rc、Arc、RefCell、Cell | m02-resource |
| mut、内部可変性、E0499、E0502、E0596 | m03-mutability |
| generic、trait、inline、単相化 | m04-zero-cost |
| 型状態、phantom、newtype | m05-type-driven |
| Result、Error、panic、?、anyhow、thiserror | m06-error-handling |
| Send、Sync、thread、async、channel | m07-concurrency |
| unsafe、FFI、extern、raw pointer、transmute | unsafe-checker |
レイヤー 2 のスキル(設計上の選択肢)
| パターン | 振り分け先 |
|---|---|
| ドメインモデル、ビジネスロジック | m09-domain |
| パフォーマンス、最適化、ベンチマーク | m10-performance |
| 統合、相互運用、バインディング | m11-ecosystem |
| リソースのライフサイクル、RAII、Drop | m12-lifecycle |
| ドメインエラー、回復戦略 | m13-domain-error |
| メンタルモデル、考え方 | m14-mental-model |
| アンチパターン、よくある間違い、落とし穴 | m15-anti-pattern |
レイヤー 3 のスキル(ドメインの制約)
| ドメインのキーワード | 振り分け先 |
|---|---|
| fintech、trading、decimal、currency | domain-fintech |
| ml、tensor、model、inference | domain-ml |
| kubernetes、docker、grpc、microservice | domain-cloud-native |
| embedded、sensor、mqtt、iot | domain-iot |
| Web サーバー、HTTP、REST、axum、actix | domain-web |
| CLI、コマンドライン、clap、terminal | domain-cli |
| no_std、microcontroller、firmware | domain-embedded |
エラーコードの振り分け
| エラーコード | 振り分け先 | よくある原因 |
|---|---|---|
| E0382 | m01-ownership | ムーブされた値の使用 |
| E0597 | m01-ownership | ライフタイムが短すぎる |
| E0506 | m01-ownership | 借用中の値に代入できない |
| E0507 | m01-ownership | 借用中の値をムーブできない |
| E0515 | m01-ownership | ローカル変数への参照を返す |
| E0716 | m01-ownership | 一時値が破棄された |
| E0106 | m01-ownership | ライフタイム指定子がない |
| E0596 | m03-mutability | 可変として借用できない |
| E0499 | m03-mutability | 複数の可変借用 |
| E0502 | m03-mutability | 借用の競合 |
| E0277 | m04/m07 | トレイト境界を満たしていない |
| E0308 | m04-zero-cost | 型が一致しない |
| E0599 | m04-zero-cost | メソッドが見つからない |
| E0038 | m04-zero-cost | トレイトがオブジェクトセーフではない |
| E0433 | m11-ecosystem | クレート/モジュールが見つからない |
機能別振り分け表
| パターン | 振り分け先 | アクション |
|---|---|---|
| 最新バージョン、新機能 | rust-learner | エージェントを使用 |
| API、ドキュメント、ドキュメンテーション | docs-researcher | エージェントを使用 |
| コードスタイル、命名、clippy | coding-guidelines | スキルを読む |
| unsafe コード、FFI | unsafe-checker | スキルを読む |
| コードレビュー | os-checker | integrations/os-checker.md を参照 |
優先順位
- 認知レイヤーを特定する(L1/L2/L3)
- エントリースキルを読み込む(m0x/m1x/domain)
- レイヤーをたどる(UP または DOWN)
- 「Trace」セクションの指示に従ってスキルを相互参照する
- 推論の連鎖を示して回答する
キーワードの競合解決
| キーワード | 解決方法 |
|---|---|
unsafe | unsafe-checker(m11 より具体的) |
error | 一般的な場合は m06、ドメイン固有の場合は m13 |
RAII | 設計では m12、実装では m01 |
crate | バージョンでは rust-learner、統合では m11 |
tokio | API では tokio-*、概念では m07 |
優先順位の階層:
1. Error codes (E0xxx) → Direct lookup, highest priority
2. Negotiation triggers (compare, vs, best practice) → Enable negotiation
3. Domain keywords + error → Load BOTH domain + error skills
4. Specific crate keywords → Route to crate-specific skill if exists
5. General concept keywords → Route to meta-question skill
サブファイルの参照
| ファイル | 内容 |
|---|---|
patterns/negotiation.md | 交渉プロトコルの詳細 |
examples/workflow.md | ワークフローの例 |
integrations/os-checker.md | OS-Checker の統合 |
コメント
Markdown 対応