Add: windows mvp - transparent bugs not fixed
This commit is contained in:
239
skills/rust-router/SKILL.md
Normal file
239
skills/rust-router/SKILL.md
Normal file
@@ -0,0 +1,239 @@
|
||||
---
|
||||
name: rust-router
|
||||
description: "CRITICAL: Use for ALL Rust questions including errors, design, and coding.
|
||||
HIGHEST PRIORITY for: 比较, 对比, compare, vs, versus, 区别, difference, 最佳实践, best practice,
|
||||
tokio vs, async-std vs, 比较 tokio, 比较 async,
|
||||
Triggers on: Rust, cargo, rustc, crate, Cargo.toml,
|
||||
意图分析, 问题分析, 语义分析, analyze intent, question analysis,
|
||||
compile error, borrow error, lifetime error, ownership error, type error, trait error,
|
||||
value moved, cannot borrow, does not live long enough, mismatched types, not satisfied,
|
||||
E0382, E0597, E0277, E0308, E0499, E0502, E0596,
|
||||
async, await, Send, Sync, tokio, concurrency, error handling,
|
||||
编译错误, compile error, 所有权, ownership, 借用, borrow, 生命周期, lifetime, 类型错误, type error,
|
||||
异步, async, 并发, concurrency, 错误处理, error handling,
|
||||
问题, problem, question, 怎么用, how to use, 如何, how to, 为什么, why,
|
||||
什么是, what is, 帮我写, help me write, 实现, implement, 解释, explain"
|
||||
globs: ["**/Cargo.toml", "**/*.rs"]
|
||||
---
|
||||
|
||||
---
|
||||
|
||||
# Rust Question Router
|
||||
|
||||
> **Version:** 2.0.0 | **Last Updated:** 2025-01-22
|
||||
>
|
||||
> **v2.0:** Context optimized - detailed examples moved to sub-files
|
||||
|
||||
## Meta-Cognition Framework
|
||||
|
||||
### Core Principle
|
||||
|
||||
**Don't answer directly. Trace through the cognitive layers first.**
|
||||
|
||||
```
|
||||
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?"
|
||||
```
|
||||
|
||||
### Routing by Entry Point
|
||||
|
||||
| User Signal | Entry Layer | Direction | First Skill |
|
||||
|-------------|-------------|-----------|-------------|
|
||||
| E0xxx error | Layer 1 | Trace UP ↑ | m01-m07 |
|
||||
| Compile error | Layer 1 | Trace UP ↑ | Error table below |
|
||||
| "How to design..." | Layer 2 | Check L3, then DOWN ↓ | m09-domain |
|
||||
| "Building [domain] app" | Layer 3 | Trace DOWN ↓ | domain-* |
|
||||
| "Best practice..." | Layer 2 | Both directions | m09-m15 |
|
||||
| Performance issue | Layer 1 → 2 | UP then DOWN | m10-performance |
|
||||
|
||||
### CRITICAL: Dual-Skill Loading
|
||||
|
||||
**When domain keywords are present, you MUST load BOTH skills:**
|
||||
|
||||
| Domain Keywords | L1 Skill | L3 Skill |
|
||||
|-----------------|----------|----------|
|
||||
| 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** |
|
||||
|
||||
---
|
||||
|
||||
## INSTRUCTIONS FOR CLAUDE
|
||||
|
||||
### CRITICAL: Negotiation Protocol Trigger
|
||||
|
||||
**BEFORE answering, check if negotiation is required:**
|
||||
|
||||
| Query Contains | Action |
|
||||
|----------------|--------|
|
||||
| "比较", "对比", "compare", "vs", "versus" | **MUST use negotiation** |
|
||||
| "最佳实践", "best practice" | **MUST use negotiation** |
|
||||
| Domain + error (e.g., "交易系统 E0382") | **MUST use negotiation** |
|
||||
| Ambiguous scope (e.g., "tokio 性能") | **SHOULD use negotiation** |
|
||||
|
||||
**When negotiation is required, include:**
|
||||
|
||||
```markdown
|
||||
## 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`
|
||||
|
||||
---
|
||||
|
||||
### Default Project Settings
|
||||
|
||||
When creating new Rust projects or Cargo.toml files, ALWAYS use:
|
||||
|
||||
```toml
|
||||
[package]
|
||||
edition = "2024" # ALWAYS use latest stable edition
|
||||
rust-version = "1.85"
|
||||
|
||||
[lints.rust]
|
||||
unsafe_code = "warn"
|
||||
|
||||
[lints.clippy]
|
||||
all = "warn"
|
||||
pedantic = "warn"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Layer 1 Skills (Language Mechanics)
|
||||
|
||||
| Pattern | Route To |
|
||||
|---------|----------|
|
||||
| move, borrow, lifetime, E0382, E0597 | m01-ownership |
|
||||
| Box, Rc, Arc, RefCell, Cell | m02-resource |
|
||||
| mut, interior mutability, E0499, E0502, E0596 | m03-mutability |
|
||||
| generic, trait, inline, monomorphization | m04-zero-cost |
|
||||
| type state, 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** |
|
||||
|
||||
## Layer 2 Skills (Design Choices)
|
||||
|
||||
| Pattern | Route To |
|
||||
|---------|----------|
|
||||
| domain model, business logic | m09-domain |
|
||||
| performance, optimization, benchmark | m10-performance |
|
||||
| integration, interop, bindings | m11-ecosystem |
|
||||
| resource lifecycle, RAII, Drop | m12-lifecycle |
|
||||
| domain error, recovery strategy | m13-domain-error |
|
||||
| mental model, how to think | m14-mental-model |
|
||||
| anti-pattern, common mistake, pitfall | m15-anti-pattern |
|
||||
|
||||
## Layer 3 Skills (Domain Constraints)
|
||||
|
||||
| Domain Keywords | Route To |
|
||||
|-----------------|----------|
|
||||
| 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 server, HTTP, REST, axum, actix | domain-web |
|
||||
| CLI, command line, clap, terminal | domain-cli |
|
||||
| no_std, microcontroller, firmware | domain-embedded |
|
||||
|
||||
---
|
||||
|
||||
## Error Code Routing
|
||||
|
||||
| Error Code | Route To | Common Cause |
|
||||
|------------|----------|--------------|
|
||||
| E0382 | m01-ownership | Use of moved value |
|
||||
| E0597 | m01-ownership | Lifetime too short |
|
||||
| E0506 | m01-ownership | Cannot assign to borrowed |
|
||||
| E0507 | m01-ownership | Cannot move out of borrowed |
|
||||
| E0515 | m01-ownership | Return local reference |
|
||||
| E0716 | m01-ownership | Temporary value dropped |
|
||||
| E0106 | m01-ownership | Missing lifetime specifier |
|
||||
| E0596 | m03-mutability | Cannot borrow as mutable |
|
||||
| E0499 | m03-mutability | Multiple mutable borrows |
|
||||
| E0502 | m03-mutability | Borrow conflict |
|
||||
| E0277 | m04/m07 | Trait bound not satisfied |
|
||||
| E0308 | m04-zero-cost | Type mismatch |
|
||||
| E0599 | m04-zero-cost | No method found |
|
||||
| E0038 | m04-zero-cost | Trait not object-safe |
|
||||
| E0433 | m11-ecosystem | Cannot find crate/module |
|
||||
|
||||
---
|
||||
|
||||
## Functional Routing Table
|
||||
|
||||
| Pattern | Route To | Action |
|
||||
|---------|----------|--------|
|
||||
| latest version, what's new | **rust-learner** | Use agents |
|
||||
| API, docs, documentation | **docs-researcher** | Use agent |
|
||||
| code style, naming, clippy | **coding-guidelines** | Read skill |
|
||||
| unsafe code, FFI | **unsafe-checker** | Read skill |
|
||||
| code review | **os-checker** | See `integrations/os-checker.md` |
|
||||
|
||||
---
|
||||
|
||||
## Priority Order
|
||||
|
||||
1. **Identify cognitive layer** (L1/L2/L3)
|
||||
2. **Load entry skill** (m0x/m1x/domain)
|
||||
3. **Trace through layers** (UP or DOWN)
|
||||
4. **Cross-reference skills** as indicated in "Trace" sections
|
||||
5. **Answer with reasoning chain**
|
||||
|
||||
### Keyword Conflict Resolution
|
||||
|
||||
| Keyword | Resolution |
|
||||
|---------|------------|
|
||||
| `unsafe` | **unsafe-checker** (more specific than m11) |
|
||||
| `error` | **m06** for general, **m13** for domain-specific |
|
||||
| `RAII` | **m12** for design, **m01** for implementation |
|
||||
| `crate` | **rust-learner** for version, **m11** for integration |
|
||||
| `tokio` | **tokio-*** for API, **m07** for concepts |
|
||||
|
||||
**Priority Hierarchy:**
|
||||
|
||||
```
|
||||
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
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Sub-Files Reference
|
||||
|
||||
| File | Content |
|
||||
|------|---------|
|
||||
| `patterns/negotiation.md` | Negotiation protocol details |
|
||||
| `examples/workflow.md` | Workflow examples |
|
||||
| `integrations/os-checker.md` | OS-Checker integration |
|
||||
85
skills/rust-router/examples/workflow.md
Normal file
85
skills/rust-router/examples/workflow.md
Normal file
@@ -0,0 +1,85 @@
|
||||
# Workflow Examples
|
||||
|
||||
> rust-router 的工作流程示例
|
||||
|
||||
## Example 1: Error Code with Domain Context
|
||||
|
||||
```
|
||||
User: "Why am I getting E0382 in my trading system?"
|
||||
|
||||
Analysis:
|
||||
1. Entry: Layer 1 (E0382 = ownership/move error)
|
||||
2. Load: m01-ownership skill
|
||||
3. Context: "trading system" → domain-fintech
|
||||
|
||||
Trace UP ↑:
|
||||
- E0382 in trading context
|
||||
- Check domain-fintech: "immutable audit records"
|
||||
- Finding: Trading data should be shared, not moved
|
||||
|
||||
Response:
|
||||
"E0382 indicates a value was moved when still needed.
|
||||
In a trading system (domain-fintech), transaction records
|
||||
should be immutable and shareable for audit purposes.
|
||||
|
||||
Instead of cloning, consider:
|
||||
- Arc<TradeRecord> for shared immutable access
|
||||
- This aligns with financial audit requirements
|
||||
|
||||
See: m01-ownership (Trace Up section),
|
||||
domain-fintech (Audit Requirements)"
|
||||
```
|
||||
|
||||
## Example 2: Design Question
|
||||
|
||||
```
|
||||
User: "How should I handle user authentication?"
|
||||
|
||||
1. Entry: Layer 2 (design question)
|
||||
2. Trace UP to Layer 3: domain-web constraints
|
||||
3. Load: domain-web skill (security, stateless HTTP)
|
||||
4. Trace DOWN: m06-error-handling, m07-concurrency
|
||||
5. Answer: JWT with proper error types, async handlers
|
||||
```
|
||||
|
||||
## Example 3: Comparative Query
|
||||
|
||||
```
|
||||
User: "Compare tokio and async-std"
|
||||
|
||||
1. Detect: "compare" → Enable negotiation
|
||||
2. Load both runtime knowledge sources
|
||||
3. Assess confidence for each
|
||||
4. Synthesize with disclosed gaps
|
||||
5. Answer: Structured comparison table
|
||||
```
|
||||
|
||||
## Example 4: Multi-Layer Trace
|
||||
|
||||
```
|
||||
User: "My web API reports Rc cannot be sent between threads"
|
||||
|
||||
1. Entry: Layer 1 (Send/Sync error)
|
||||
2. Load: m07-concurrency
|
||||
3. Detect: "web API" → domain-web
|
||||
4. Dual-skill loading:
|
||||
- m07: Explain Send/Sync bounds
|
||||
- domain-web: Web state management patterns
|
||||
5. Answer: Use Arc instead of Rc, or move to thread-local
|
||||
```
|
||||
|
||||
## Example 5: Intent Analysis Request
|
||||
|
||||
```
|
||||
User: "Analyze this question: How do I share state in actix-web?"
|
||||
|
||||
Analysis Steps:
|
||||
1. Extract Keywords: share, state, actix-web
|
||||
2. Identify Entry Layer: Layer 1 (sharing = concurrency) + Layer 3 (actix-web = web)
|
||||
3. Map to Skills: m07-concurrency, domain-web
|
||||
4. Report:
|
||||
- Layer 1: Concurrency (state sharing mechanisms)
|
||||
- Layer 3: Web domain (HTTP handler patterns)
|
||||
- Suggested trace: L1 → L3
|
||||
5. Invoke: m07-concurrency first, then domain-web
|
||||
```
|
||||
56
skills/rust-router/integrations/os-checker.md
Normal file
56
skills/rust-router/integrations/os-checker.md
Normal file
@@ -0,0 +1,56 @@
|
||||
# OS-Checker Integration
|
||||
|
||||
> 代码审查和安全审计工具集成
|
||||
|
||||
## Available Commands
|
||||
|
||||
| Use Case | Command | Tools |
|
||||
|----------|---------|-------|
|
||||
| Daily check | `/rust-review` | clippy |
|
||||
| Security audit | `/audit security` | cargo audit, geiger |
|
||||
| Unsafe audit | `/audit safety` | miri, rudra |
|
||||
| Concurrency audit | `/audit concurrency` | lockbud |
|
||||
| Full audit | `/audit full` | all os-checker tools |
|
||||
|
||||
## When to Suggest OS-Checker
|
||||
|
||||
| User Intent | Suggest |
|
||||
|-------------|---------|
|
||||
| Code review request | `/rust-review` |
|
||||
| Security concerns | `/audit security` |
|
||||
| Unsafe code review | `/audit safety` |
|
||||
| Deadlock/race concerns | `/audit concurrency` |
|
||||
| Pre-release check | `/audit full` |
|
||||
|
||||
## Tool Descriptions
|
||||
|
||||
### clippy
|
||||
Standard Rust linter for code style and common mistakes.
|
||||
|
||||
### cargo audit
|
||||
Security vulnerability scanner for dependencies.
|
||||
|
||||
### geiger
|
||||
Counts unsafe code usage in dependencies.
|
||||
|
||||
### miri
|
||||
Interprets MIR to detect undefined behavior.
|
||||
|
||||
### rudra
|
||||
Memory safety bug detector.
|
||||
|
||||
### lockbud
|
||||
Deadlock and concurrency bug detector.
|
||||
|
||||
## Integration Flow
|
||||
|
||||
```
|
||||
User: "Review my unsafe code"
|
||||
│
|
||||
▼
|
||||
Router detects: unsafe + review
|
||||
│
|
||||
├── Load: unsafe-checker skill (for manual review)
|
||||
│
|
||||
└── Suggest: `/audit safety` (for automated check)
|
||||
```
|
||||
154
skills/rust-router/patterns/negotiation.md
Normal file
154
skills/rust-router/patterns/negotiation.md
Normal file
@@ -0,0 +1,154 @@
|
||||
# Negotiation Protocol
|
||||
|
||||
> 比较查询和跨领域问题的处理协议
|
||||
|
||||
## When to Enable Negotiation
|
||||
|
||||
For complex queries requiring structured agent responses, enable negotiation mode.
|
||||
|
||||
| Query Pattern | Enable Negotiation | Reason |
|
||||
|---------------|-------------------|--------|
|
||||
| Single error code lookup | No | Direct answer |
|
||||
| Single crate version | No | Direct lookup |
|
||||
| "Compare X and Y" | **Yes** | Multi-faceted |
|
||||
| Domain + error | **Yes** | Cross-layer context |
|
||||
| "Best practices for..." | **Yes** | Requires synthesis |
|
||||
| Ambiguous scope | **Yes** | Needs clarification |
|
||||
| Multi-crate question | **Yes** | Multiple sources |
|
||||
|
||||
## Negotiation Decision Flow
|
||||
|
||||
```
|
||||
Query Received
|
||||
│
|
||||
▼
|
||||
┌─────────────────────────────┐
|
||||
│ Is query single-lookup? │
|
||||
│ (version, error code, def) │
|
||||
└─────────────────────────────┘
|
||||
│
|
||||
├── Yes → Direct dispatch (no negotiation)
|
||||
│
|
||||
▼ No
|
||||
┌─────────────────────────────┐
|
||||
│ Does query require: │
|
||||
│ - Comparison? │
|
||||
│ - Cross-domain context? │
|
||||
│ - Synthesis/aggregation? │
|
||||
│ - Multiple sources? │
|
||||
└─────────────────────────────┘
|
||||
│
|
||||
├── Yes → Dispatch with negotiation: true
|
||||
│
|
||||
▼ No
|
||||
┌─────────────────────────────┐
|
||||
│ Is scope ambiguous? │
|
||||
└─────────────────────────────┘
|
||||
│
|
||||
├── Yes → Dispatch with negotiation: true
|
||||
│
|
||||
▼ No
|
||||
└── Direct dispatch (no negotiation)
|
||||
```
|
||||
|
||||
## Negotiation Dispatch
|
||||
|
||||
When dispatching with negotiation:
|
||||
|
||||
```
|
||||
1. Set `negotiation: true`
|
||||
2. Include original query context
|
||||
3. Expect structured response:
|
||||
- Findings
|
||||
- Confidence (HIGH/MEDIUM/LOW/UNCERTAIN)
|
||||
- Gaps identified
|
||||
- Context questions (if any)
|
||||
4. Evaluate response against original intent
|
||||
```
|
||||
|
||||
## Orchestrator Evaluation
|
||||
|
||||
After receiving negotiation response:
|
||||
|
||||
| Confidence | Intent Coverage | Action |
|
||||
|------------|-----------------|--------|
|
||||
| HIGH | Complete | Synthesize answer |
|
||||
| HIGH | Partial | May need supplementary query |
|
||||
| MEDIUM | Complete | Accept with disclosed gaps |
|
||||
| MEDIUM | Partial | Refine with context |
|
||||
| LOW | Any | Refine or try alternative |
|
||||
| UNCERTAIN | Any | Try alternative or escalate |
|
||||
|
||||
## Refinement Loop
|
||||
|
||||
If response insufficient:
|
||||
|
||||
```
|
||||
Round 1: Initial query
|
||||
│
|
||||
▼ (LOW confidence or gaps block intent)
|
||||
Round 2: Refined query with:
|
||||
- Answers to agent's context questions
|
||||
- Narrowed scope
|
||||
│
|
||||
▼ (still insufficient)
|
||||
Round 3: Final attempt with:
|
||||
- Alternative agent/source
|
||||
- Maximum context provided
|
||||
│
|
||||
▼ (still insufficient)
|
||||
Synthesize best-effort answer with disclosed gaps
|
||||
```
|
||||
|
||||
## Integration with 3-Strike Rule
|
||||
|
||||
Negotiation follows the 3-Strike escalation:
|
||||
|
||||
```
|
||||
Strike 1: Initial query returns LOW confidence
|
||||
→ Refine with more context
|
||||
|
||||
Strike 2: Refined query still LOW
|
||||
→ Try alternative agent/source
|
||||
|
||||
Strike 3: Still insufficient
|
||||
→ Synthesize best-effort answer
|
||||
→ Report gaps to user explicitly
|
||||
```
|
||||
|
||||
See `_meta/error-protocol.md` for full escalation rules.
|
||||
|
||||
## Negotiation Routing Examples
|
||||
|
||||
**Example 1: No Negotiation Needed**
|
||||
```
|
||||
Query: "What is tokio's latest version?"
|
||||
Analysis: Single lookup
|
||||
Action: Direct dispatch to crate-researcher
|
||||
```
|
||||
|
||||
**Example 2: Negotiation Required**
|
||||
```
|
||||
Query: "Compare tokio and async-std for a web server"
|
||||
Analysis: Comparative + domain context
|
||||
Action: Dispatch with negotiation: true
|
||||
Expected: Structured responses from both runtime lookups
|
||||
Evaluation: Check if web-server specific data found
|
||||
```
|
||||
|
||||
**Example 3: Cross-Domain Negotiation**
|
||||
```
|
||||
Query: "E0382 in my trading system"
|
||||
Analysis: Error code + domain context
|
||||
Action:
|
||||
- Dispatch m01-ownership (standard - error is defined)
|
||||
- Dispatch domain-fintech (negotiation: true - domain context)
|
||||
Synthesis: Combine error explanation with domain-appropriate fix
|
||||
```
|
||||
|
||||
## Related Documents
|
||||
|
||||
- `_meta/negotiation-protocol.md` - Full protocol specification
|
||||
- `_meta/negotiation-templates.md` - Response templates
|
||||
- `_meta/error-protocol.md` - 3-Strike escalation
|
||||
- `agents/_negotiation/response-format.md` - Agent response format
|
||||
Reference in New Issue
Block a user