archive/upstream/chasebuild-agent-skills/rust/skills/m01-ownership/SKILL.md
CRITICAL: Use for ownership/borrow/lifetime issues. Triggers: E0382, E0597, E0506, E0507, E0515, E0716, E0106, value moved, borrowed value does not live long enough, cannot move out of, use of moved value, ownership, borrow, lifetime, 'a, 'static, move, clone, Copy, 所有权, 借用, 生命周期
npx skillsauth add 0xharryriddle/codex-field-kit m01-ownershipInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
4 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Layer 1: Language Mechanics
Who should own this data, and for how long?
Before fixing ownership errors, understand the data's role:
| Error | Don't Just Say | Ask Instead | |-------|----------------|-------------| | E0382 | "Clone it" | Who should own this data? | | E0597 | "Extend lifetime" | Is the scope boundary correct? | | E0506 | "End borrow first" | Should mutation happen elsewhere? | | E0507 | "Clone before move" | Why are we moving from a reference? | | E0515 | "Return owned" | Should caller own the data? | | E0716 | "Bind to variable" | Why is this temporary? | | E0106 | "Add 'a" | What is the actual lifetime relationship? |
Before fixing an ownership error, ask:
What is this data's domain role?
Is the ownership design intentional?
Fix symptom or redesign?
When errors persist, trace to design layer:
E0382 (moved value)
↑ Ask: What design choice led to this ownership pattern?
↑ Check: m09-domain (is this Entity or Value Object?)
↑ Check: domain-* (what constraints apply?)
| Persistent Error | Trace To | Question | |-----------------|----------|----------| | E0382 repeated | m02-resource | Should use Arc/Rc for sharing? | | E0597 repeated | m09-domain | Is scope boundary at right place? | | E0506/E0507 | m03-mutability | Should use interior mutability? |
From design decisions to implementation:
"Data needs to be shared immutably"
↓ Use: Arc<T> (multi-thread) or Rc<T> (single-thread)
"Data needs exclusive ownership"
↓ Use: move semantics, take ownership
"Data is read-only view"
↓ Use: &T (immutable borrow)
| Pattern | Ownership | Cost | Use When |
|---------|-----------|------|----------|
| Move | Transfer | Zero | Caller doesn't need data |
| &T | Borrow | Zero | Read-only access |
| &mut T | Exclusive borrow | Zero | Need to modify |
| clone() | Duplicate | Alloc + copy | Actually need a copy |
| Rc<T> | Shared (single) | Ref count | Single-thread sharing |
| Arc<T> | Shared (multi) | Atomic ref count | Multi-thread sharing |
| Cow<T> | Clone-on-write | Alloc if mutated | Might modify |
| Error | Cause | Quick Fix |
|-------|-------|-----------|
| E0382 | Value moved | Clone, reference, or redesign ownership |
| E0597 | Reference outlives owner | Extend owner scope or restructure |
| E0506 | Assign while borrowed | End borrow before mutation |
| E0507 | Move out of borrowed | Clone or use reference |
| E0515 | Return local reference | Return owned value |
| E0716 | Temporary dropped | Bind to variable |
| E0106 | Missing lifetime | Add 'a annotation |
| Anti-Pattern | Why Bad | Better |
|--------------|---------|--------|
| .clone() everywhere | Hides design issues | Design ownership properly |
| Fight borrow checker | Increases complexity | Work with the compiler |
| 'static for everything | Restricts flexibility | Use appropriate lifetimes |
| Leak with Box::leak | Memory leak | Proper lifetime design |
| When | See | |------|-----| | Need smart pointers | m02-resource | | Need interior mutability | m03-mutability | | Data is domain entity | m09-domain | | Learning ownership concepts | m14-mental-model |
development
React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React/Next.js code to ensure optimal performance patterns. Triggers on tasks involving React components, Next.js pages, data fetching, bundle optimization, or performance improvements.
testing
[EXPLICIT INVOCATION ONLY] Creates dependency-aware implementation plans optimized for parallel multi-agent execution.
testing
Only to be triggered by explicit super-swarm-spark commands.
development
Create and install Codex custom agent roles in ~/.codex/config.toml, generate role config files, enforce supported keys, and guide users through required role inputs (model, reasoning effort, developer_instructions).