mirror of
https://github.com/affaan-m/ECC.git
synced 2026-08-24 00:12:25 +02:00
The `.opencode/commands/*.md` frontmatter referenced agents with the Claude Code plugin namespace (`agent: everything-claude-code:<name>`), but ECC's opencode integration registers its agents unscoped in `opencode.json`'s `agent` map (`code-reviewer`, `planner`, ...), and that file's own `command` section already references them unscoped. The `everything-claude-code:` scope resolves under no opencode config (the opencode plugin package is `ecc-universal`, and inline-config agents are bare), so subtask commands like `/code-review` hard-fail with `Agent not found: everything-claude-code:code-reviewer`. Non-subtask commands fall back to the default agent and appear to work — which is why only some commands failed. Strip the `everything-claude-code:` prefix from all 30 command frontmatter agent ids so they match the registered agents, fix the MIGRATION.md example, and replace the test that enforced the broken scoped invariant with one that asserts each command agent id is a registered opencode agent (fails on the old scoped ids, passes on the fix). Fixes #2477
66 lines
1.8 KiB
Markdown
66 lines
1.8 KiB
Markdown
---
|
|
description: Rust code review for ownership, safety, and idiomatic patterns
|
|
agent: rust-reviewer
|
|
subtask: true
|
|
---
|
|
|
|
# Rust Review Command
|
|
|
|
Review Rust code for idiomatic patterns and best practices: $ARGUMENTS
|
|
|
|
## Your Task
|
|
|
|
1. **Analyze Rust code** for idioms and patterns
|
|
2. **Check ownership** - borrowing, lifetimes, unnecessary clones
|
|
3. **Review error handling** - proper `?` propagation, no unwrap in production
|
|
4. **Verify safety** - unsafe usage, injection, secrets
|
|
|
|
## Review Checklist
|
|
|
|
### Safety (CRITICAL)
|
|
- [ ] No unchecked `unwrap()`/`expect()` in production paths
|
|
- [ ] `unsafe` blocks have `// SAFETY:` comments
|
|
- [ ] No SQL/command injection
|
|
- [ ] No hardcoded secrets
|
|
|
|
### Ownership (HIGH)
|
|
- [ ] No unnecessary `.clone()` to satisfy borrow checker
|
|
- [ ] `&str` preferred over `String` in function parameters
|
|
- [ ] `&[T]` preferred over `Vec<T>` in function parameters
|
|
- [ ] No excessive lifetime annotations where elision works
|
|
|
|
### Error Handling (HIGH)
|
|
- [ ] Errors propagated with `?`; use `.context()` in `anyhow`/`eyre` application code
|
|
- [ ] No silenced errors (`let _ = result;`)
|
|
- [ ] `thiserror` for library errors, `anyhow` for applications
|
|
|
|
### Concurrency (HIGH)
|
|
- [ ] No blocking in async context
|
|
- [ ] Bounded channels preferred
|
|
- [ ] `Mutex` poisoning handled
|
|
- [ ] `Send`/`Sync` bounds correct
|
|
|
|
### Code Quality (MEDIUM)
|
|
- [ ] Functions under 50 lines
|
|
- [ ] No deep nesting (>4 levels)
|
|
- [ ] Exhaustive matching on business enums
|
|
- [ ] Clippy warnings addressed
|
|
|
|
## Report Format
|
|
|
|
### CRITICAL Issues
|
|
- [file:line] Issue description
|
|
Suggestion: How to fix
|
|
|
|
### HIGH Issues
|
|
- [file:line] Issue description
|
|
Suggestion: How to fix
|
|
|
|
### MEDIUM Issues
|
|
- [file:line] Issue description
|
|
Suggestion: How to fix
|
|
|
|
---
|
|
|
|
**TIP**: Run `cargo clippy -- -D warnings` and `cargo fmt --check` for automated checks.
|