[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6GXGE75H402E090KPDSEN46":3,"skill-same:01M6GXGE75H402E090KPDSEN46":70},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":35,"linkOnly":36,"markdownContent":37,"markdownBody":38,"frontMatter":39,"refName":47,"commitSha":48,"skillDirectory":49,"forksCount":50,"repositoryHtmlUrl":51,"repositoryHomepageUrl":51,"ownerHtmlUrl":52,"ownerBlogUrl":53,"ownerDescription":54,"updatedAt":55,"install":56,"resources":69},"01M6GXGE75H402E090KPDSEN46","Rust Safety Review",null,"Deep review of Rust code — unsafe blocks, ownership patterns, lifetime issues, error handling, concurrency, and common footguns.","malayvuong\u002Fagent-orchestra","malayvuong","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F13240975?v=4","01M6GXCDVPB2VPZMDZK1KF98M0","Nguyen Minh Vuong","01M6GXCE176VDX3XV4Z4KNR33J",1,"MIT","https:\u002F\u002Fgithub.com\u002Fmalayvuong\u002Fagent-orchestra\u002Fblob\u002Fmain\u002F.agent-orchestra\u002Fskills\u002Frust-safety\u002FSKILL.md",[],[19,5,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34],"Safety","review","rust","code","error handling","issues","deep review","concurrency","common","patterns","deep","logic","error","blocks","ownership","security","2026-11-10 10:12:30",false,"---\nname: Rust Safety Review\ndescription: Deep review of Rust code — unsafe blocks, ownership patterns, lifetime issues, error handling, concurrency, and common footguns.\nversion: 2026.3.1\nlicense: MIT\ntriggers:\n  lenses:\n    - security\n    - logic\n  keywords:\n    - rust\n    - unsafe\n    - ownership\n    - lifetime\n    - borrow\n---\n\nWhen reviewing Rust code, apply the following language-specific checks.\n\n## Unsafe Block Audit\n\nEvery `unsafe` block must be individually justified. For each unsafe block, verify:\n\n- The safety invariant is documented in a comment directly above the block\n- The invariant is actually upheld by surrounding code\n- The unsafe operation cannot be replaced by a safe alternative\n- The scope of the unsafe block is minimal — only the operation that requires unsafe, not surrounding safe code\n\nFlag `unsafe impl` for traits without documentation of the safety contract. Flag unsafe blocks that perform multiple unrelated unsafe operations — each should be in its own block with its own justification.\n\nCheck for `unsafe` in public APIs — if a function requires callers to uphold invariants, it should be marked `unsafe fn` and documented.\n\n## Ownership and Borrowing\n\nFlag unnecessary `.clone()` calls that exist only to satisfy the borrow checker — these often indicate a design problem. Check for:\n\n- `clone()` inside loops where a reference would suffice\n- `clone()` on large data structures (Vec, HashMap, String) passed to functions that only need a reference\n- `Arc\u003CMutex\u003CT>>` where `&mut T` or channel-based communication would be simpler\n\nVerify `String` vs `&str` usage: functions that only read strings should accept `&str`, not `String` or `&String`. Same for `Vec\u003CT>` vs `&[T]`.\n\n## Lifetime Issues\n\nFlag explicit lifetimes that could be elided — unnecessary lifetime annotations add complexity. Check that lifetime bounds on structs accurately reflect the relationship between the struct and its borrowed data.\n\nFlag `'static` lifetime bounds on trait objects or generics where a shorter lifetime would work. Check for patterns that force `'static` unnecessarily (spawning tasks with `tokio::spawn` that capture local references).\n\n## Error Handling\n\nFlag `unwrap()` and `expect()` in library code — these panic instead of propagating errors. In application code, `unwrap()` is acceptable only with a comment explaining why the value is guaranteed to be `Some`\u002F`Ok`.\n\nVerify `?` operator is used for error propagation instead of manual `match` on `Result`. Flag error types that implement `Display` but not `Error`. Check that custom error types implement `From\u003CT>` for the errors they wrap — this enables `?` chaining.\n\nFlag `panic!()` in library code. Flag `process::exit()` in library code — only binaries should decide to exit.\n\n## Concurrency\n\nVerify `Arc` is used instead of `Rc` when data crosses thread boundaries. Flag `Mutex` lock scopes that are larger than necessary — hold the lock only for the critical section. Check for potential deadlocks from multiple mutex acquisitions in different orders.\n\nFlag `unsafe impl Send` or `unsafe impl Sync` without documentation of why the type is safe to share across threads. Verify channel-based communication (`mpsc`, `crossbeam`) is preferred over shared mutable state when the pattern fits.\n\n## Common Footguns\n\nFlag integer overflow in release mode — Rust wraps by default in release. Use `checked_add`, `saturating_add`, or `wrapping_add` when overflow is possible. Check for off-by-one errors in slice indexing — prefer `.get()` with option handling over direct indexing.\n\nFlag `mem::transmute` — this is almost always wrong. Flag `mem::forget` unless it is paired with a corresponding `ManuallyDrop` pattern. Check for `std::mem::uninitialized` usage — use `MaybeUninit` instead.\n\n## Dependencies\n\nCheck `Cargo.toml` for wildcard version specifiers (`*`). Verify that `unsafe` crates in the dependency tree are audited. Flag `build.rs` scripts that download or execute external code at compile time.\n\nFor each finding, report: the function or module, the specific pattern, the risk level, and the recommended fix.\n","When reviewing Rust code, apply the following language-specific checks.\n\n## Unsafe Block Audit\n\nEvery `unsafe` block must be individually justified. For each unsafe block, verify:\n\n- The safety invariant is documented in a comment directly above the block\n- The invariant is actually upheld by surrounding code\n- The unsafe operation cannot be replaced by a safe alternative\n- The scope of the unsafe block is minimal — only the operation that requires unsafe, not surrounding safe code\n\nFlag `unsafe impl` for traits without documentation of the safety contract. Flag unsafe blocks that perform multiple unrelated unsafe operations — each should be in its own block with its own justification.\n\nCheck for `unsafe` in public APIs — if a function requires callers to uphold invariants, it should be marked `unsafe fn` and documented.\n\n## Ownership and Borrowing\n\nFlag unnecessary `.clone()` calls that exist only to satisfy the borrow checker — these often indicate a design problem. Check for:\n\n- `clone()` inside loops where a reference would suffice\n- `clone()` on large data structures (Vec, HashMap, String) passed to functions that only need a reference\n- `Arc\u003CMutex\u003CT>>` where `&mut T` or channel-based communication would be simpler\n\nVerify `String` vs `&str` usage: functions that only read strings should accept `&str`, not `String` or `&String`. Same for `Vec\u003CT>` vs `&[T]`.\n\n## Lifetime Issues\n\nFlag explicit lifetimes that could be elided — unnecessary lifetime annotations add complexity. Check that lifetime bounds on structs accurately reflect the relationship between the struct and its borrowed data.\n\nFlag `'static` lifetime bounds on trait objects or generics where a shorter lifetime would work. Check for patterns that force `'static` unnecessarily (spawning tasks with `tokio::spawn` that capture local references).\n\n## Error Handling\n\nFlag `unwrap()` and `expect()` in library code — these panic instead of propagating errors. In application code, `unwrap()` is acceptable only with a comment explaining why the value is guaranteed to be `Some`\u002F`Ok`.\n\nVerify `?` operator is used for error propagation instead of manual `match` on `Result`. Flag error types that implement `Display` but not `Error`. Check that custom error types implement `From\u003CT>` for the errors they wrap — this enables `?` chaining.\n\nFlag `panic!()` in library code. Flag `process::exit()` in library code — only binaries should decide to exit.\n\n## Concurrency\n\nVerify `Arc` is used instead of `Rc` when data crosses thread boundaries. Flag `Mutex` lock scopes that are larger than necessary — hold the lock only for the critical section. Check for potential deadlocks from multiple mutex acquisitions in different orders.\n\nFlag `unsafe impl Send` or `unsafe impl Sync` without documentation of why the type is safe to share across threads. Verify channel-based communication (`mpsc`, `crossbeam`) is preferred over shared mutable state when the pattern fits.\n\n## Common Footguns\n\nFlag integer overflow in release mode — Rust wraps by default in release. Use `checked_add`, `saturating_add`, or `wrapping_add` when overflow is possible. Check for off-by-one errors in slice indexing — prefer `.get()` with option handling over direct indexing.\n\nFlag `mem::transmute` — this is almost always wrong. Flag `mem::forget` unless it is paired with a corresponding `ManuallyDrop` pattern. Check for `std::mem::uninitialized` usage — use `MaybeUninit` instead.\n\n## Dependencies\n\nCheck `Cargo.toml` for wildcard version specifiers (`*`). Verify that `unsafe` crates in the dependency tree are audited. Flag `build.rs` scripts that download or execute external code at compile time.\n\nFor each finding, report: the function or module, the specific pattern, the risk level, and the recommended fix.\n",{"name":5,"license":15,"version":40,"triggers":41,"description":7},"2026.3.1",{"lenses":42,"keywords":43},[34,30],[21,44,33,45,46],"unsafe","lifetime","borrow","main","eac6069a8690d89fd23f08d2d14e4874ed376a77",".agent-orchestra\u002Fskills\u002Frust-safety",0,"https:\u002F\u002Fgithub.com\u002Fmalayvuong\u002Fagent-orchestra","https:\u002F\u002Fgithub.com\u002Fmalayvuong","www.malayvuong.com","Just a newbie at everything","2026-10-09 12:52:45",{"source":8,"skillName":5,"commands":57,"prompt":67,"zipAvailable":68},[58,61,64],{"tool":59,"command":60},"npx","npx skills add malayvuong\u002Fagent-orchestra --skill \"Rust Safety Review\"",{"tool":62,"command":63},"bunx","bunx skills add malayvuong\u002Fagent-orchestra --skill \"Rust Safety Review\"",{"tool":65,"command":66},"pnpm","pnpm dlx skills add malayvuong\u002Fagent-orchestra --skill \"Rust Safety Review\"","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmalayvuong\u002Fagent-orchestra\u002Fblob\u002Fmain\u002F.agent-orchestra\u002Fskills\u002Frust-safety\u002FSKILL.md",true,[],[71,110,128,144,168,187],{"skillNo":72,"name":73,"nameZh":6,"description":74,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":75,"categories":76,"keywords":93,"publishedAt":35},"01M6GXHYPRJ43SHFPFJTF87GS8","Vue.js Review","Deep review of Vue.js applications — Composition API patterns, reactivity traps, component design, Pinia state management, and performance pitfalls.","https:\u002F\u002Fgithub.com\u002Fmalayvuong\u002Fagent-orchestra\u002Fblob\u002Fmain\u002F.agent-orchestra\u002Fskills\u002Fvue-review\u002FSKILL.md",[77,82,85,88],{"categoryNo":78,"categoryName":79,"taxonomyType":80,"taxonomyTypeDesc":81},"01JBSEEDCAT000000000000009","前端开发","SCENARIO","使用场景",{"categoryNo":83,"categoryName":84,"taxonomyType":80,"taxonomyTypeDesc":81},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":86,"categoryName":87,"taxonomyType":80,"taxonomyTypeDesc":81},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":89,"categoryName":90,"taxonomyType":91,"taxonomyTypeDesc":92},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[20,94,95,96,97,98,99,100,101,25,102,103,104,105,106,107,29,30,108,109],"vue","js","Vue js Review","design","performance","component","state management","state","api patterns","applications","api","Composition","pinia","management","pitfalls","pinia state",{"skillNo":111,"name":112,"nameZh":6,"description":113,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":114,"categories":115,"keywords":116,"publishedAt":35},"01M6GXHSPDDH1PQEN61ENMCEF5","Unity Review","Deep review of Unity C# code — object pooling, Update allocation, physics patterns, UI performance, serialization, and mobile optimization.","https:\u002F\u002Fgithub.com\u002Fmalayvuong\u002Fagent-orchestra\u002Fblob\u002Fmain\u002F.agent-orchestra\u002Fskills\u002Funity-review\u002FSKILL.md",[],[20,117,112,98,118,22,25,119,120,121,122,28,123,29,30,124,125,126,127],"unity","update","ui","serialization","Optimization","mobile","physics","C#","mobile optimization","object","allocation",{"skillNo":129,"name":130,"nameZh":6,"description":131,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":132,"categories":133,"keywords":134,"publishedAt":35},"01M6GXHNKTH12CGSRWDGF2H1Q9","TypeScript Review","Deep review of TypeScript code — type safety, generics patterns, strict mode compliance, type narrowing, module boundaries, and common escape hatches.","https:\u002F\u002Fgithub.com\u002Fmalayvuong\u002Fagent-orchestra\u002Fblob\u002Fmain\u002F.agent-orchestra\u002Fskills\u002Ftypescript-review\u002FSKILL.md",[],[20,135,136,22,25,137,138,19,27,28,29,30,139,140,141,142,143],"typescript","typescript review","compliance","Type Safety","module","type","interface","consistency","mode",{"skillNo":145,"name":146,"nameZh":6,"description":147,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":148,"categories":149,"keywords":156,"publishedAt":35},"01M6GXHH3DMZD272RVH4800C67","Test Conventions","Testing patterns and conventions for code review. Covers naming, AAA structure, boundary testing, mock vs real dependencies, and coverage expectations.","https:\u002F\u002Fgithub.com\u002Fmalayvuong\u002Fagent-orchestra\u002Fblob\u002Fmain\u002F.agent-orchestra\u002Fskills\u002Ftest-conventions\u002FSKILL.md",[150,153],{"categoryNo":151,"categoryName":152,"taxonomyType":80,"taxonomyTypeDesc":81},"01JBSEEDCAT000000000000007","代码审查",{"categoryNo":154,"categoryName":155,"taxonomyType":80,"taxonomyTypeDesc":81},"01JBSEEDCAT000000000000008","测试与质量",[157,158,146,159,160,20,22,161,162,163,28,164,165,166,167],"test","conventions","code review","testing","testing patterns","boundary","coverage","dependencies","structure","mock","naming",{"skillNo":169,"name":170,"nameZh":6,"description":171,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":172,"categories":173,"keywords":178,"publishedAt":35},"01M6GXHCAQSJDVNVRFFD1HJWTN","Terraform Review","Deep review of Terraform\u002FOpenTofu configuration — state management, module design, security hardening, drift prevention, and production safety patterns.","https:\u002F\u002Fgithub.com\u002Fmalayvuong\u002Fagent-orchestra\u002Fblob\u002Fmain\u002F.agent-orchestra\u002Fskills\u002Fterraform-review\u002FSKILL.md",[174,177],{"categoryNo":175,"categoryName":176,"taxonomyType":80,"taxonomyTypeDesc":81},"01JBSEEDCAT000000000000011","运维与部署",{"categoryNo":86,"categoryName":87,"taxonomyType":80,"taxonomyTypeDesc":81},[20,179,170,97,34,100,101,25,180,181,182,183,19,184,107,185,186,29,30,139],"terraform","cloud","aws","hardening","Production","opentofu","iac","drift",{"skillNo":188,"name":189,"nameZh":6,"description":190,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":191,"categories":192,"keywords":194,"publishedAt":35},"01M6GXH83F11CK4BQEAJPN6HDE","Swift Review","Deep review of Swift code — memory management, concurrency patterns, optionals, protocol design, SwiftUI lifecycle, and iOS platform patterns.","https:\u002F\u002Fgithub.com\u002Fmalayvuong\u002Fagent-orchestra\u002Fblob\u002Fmain\u002F.agent-orchestra\u002Fskills\u002Fswift-review\u002FSKILL.md",[193],{"categoryNo":86,"categoryName":87,"taxonomyType":80,"taxonomyTypeDesc":81},[195,20,189,97,196,98,22,197,25,198,26,199,200,201,107,29,30,202,203,204],"swift","memory","protocol","ios","lifecycle","swiftui","uikit","xcode","apple","platform"]