Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
actionbook avatar

M12 Lifecycle

  • 1.4k installs
  • 1.3k repo stars
  • Updated May 24, 2026
  • actionbook/rust-skills

m12-lifecycle is an agent skill for design rust resource lifecycles with raii, drop, pools, and lazy initialization.

About

The m12-lifecycle skill is designed for design Rust resource lifecycles with RAII, Drop, pools, and lazy initialization. Resource Lifecycle > Layer 2: Design Choices Core Question When should this resource be created, used, and cleaned up? Before implementing lifecycle: What's the resource's scope? Invoke when the user designs RAII, Drop, connection pools, or lazy resource initialization in Rust.

  • What's the resource's scope?.
  • Who owns the cleanup responsibility?.
  • What happens on error?.

M12 Lifecycle by the numbers

  • 1,434 all-time installs (skills.sh)
  • +53 installs in the week ending Jul 28, 2026 (Skillselion tracking)
  • Ranked #13 of 129 Rust skills by installs in the Skillselion catalog
  • Security screen: LOW risk (skills.sh audit)
  • Data as of Jul 28, 2026 (Skillselion catalog sync)
At a glance

m12-lifecycle capabilities & compatibility

Capabilities
what's the resource's scope? · who owns the cleanup responsibility? · what happens on error?
From the docs

What m12-lifecycle says it does

Use when designing resource lifecycles. Keywords: RAII, Drop, resource lifecycle, connection pool, lazy initialization, connection pool design, resource cleanup patterns, cleanup,
SKILL.md
Use when designing resource lifecycles. Keywords: RAII, Drop, resource lifecycle, connection pool, lazy initialization, connection pool design, resource cleanup
SKILL.md
npx skills add https://github.com/actionbook/rust-skills --skill m12-lifecycle

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs1.4k
repo stars1.3k
Security audit3 / 3 scanners passed
Last updatedMay 24, 2026
Repositoryactionbook/rust-skills

How do I design rust resource lifecycles with raii, drop, pools, and lazy initialization?

Design Rust resource lifecycles with RAII, Drop, pools, and lazy initialization.

Who is it for?

Rust developers modeling connection pools, cleanup, and OnceCell lazy init.

Skip if: Skip for GC-managed languages without Rust ownership lifecycle concerns.

When should I use this skill?

User designs RAII, Drop, connection pools, or lazy resource initialization in Rust.

What you get

Completed m12-lifecycle workflow with documented commands, files, and expected deliverables.

  • Lifecycle design decisions
  • Cleanup ownership contract
  • Chosen init and drop pattern

By the numbers

  • Layer 2 design-choice skill in the actionbook/rust-skills series

Files

SKILL.mdMarkdownGitHub ↗

Resource Lifecycle

Layer 2: Design Choices

Core Question

When should this resource be created, used, and cleaned up?

Before implementing lifecycle:

  • What's the resource's scope?
  • Who owns the cleanup responsibility?
  • What happens on error?

---

Lifecycle Pattern → Implementation

PatternWhenImplementation
RAIIAuto cleanupDrop trait
Lazy initDeferred creationOnceLock, LazyLock
PoolReuse expensive resourcesr2d2, deadpool
GuardScoped accessMutexGuard pattern
ScopeTransaction boundaryCustom struct + Drop

---

Thinking Prompt

Before designing lifecycle:

1. What's the resource cost?

  • Cheap → create per use
  • Expensive → pool or cache
  • Global → lazy singleton

2. What's the scope?

  • Function-local → stack allocation
  • Request-scoped → passed or extracted
  • Application-wide → static or Arc

3. What about errors?

  • Cleanup must happen → Drop
  • Cleanup is optional → explicit close
  • Cleanup can fail → Result from close

---

Trace Up ↑

To domain constraints (Layer 3):

"How should I manage database connections?"
    ↑ Ask: What's the connection cost?
    ↑ Check: domain-* (latency requirements)
    ↑ Check: Infrastructure (connection limits)
QuestionTrace ToAsk
Connection poolingdomain-*What's acceptable latency?
Resource limitsdomain-*What are infra constraints?
Transaction scopedomain-*What must be atomic?

---

Trace Down ↓

To implementation (Layer 1):

"Need automatic cleanup"
    ↓ m02-resource: Implement Drop
    ↓ m01-ownership: Clear owner for cleanup

"Need lazy initialization"
    ↓ m03-mutability: OnceLock for thread-safe
    ↓ m07-concurrency: LazyLock for sync

"Need connection pool"
    ↓ m07-concurrency: Thread-safe pool
    ↓ m02-resource: Arc for sharing

---

Quick Reference

PatternTypeUse Case
RAIIDrop traitAuto cleanup on scope exit
Lazy InitOnceLock, LazyLockDeferred initialization
Poolr2d2, deadpoolConnection reuse
GuardMutexGuardScoped lock release
ScopeCustom structTransaction boundaries

Lifecycle Events

EventRust Mechanism
Creationnew(), Default
Lazy InitOnceLock::get_or_init
Usage&self, &mut self
CleanupDrop::drop()

Pattern Templates

RAII Guard

struct FileGuard {
    path: PathBuf,
    _handle: File,
}

impl Drop for FileGuard {
    fn drop(&mut self) {
        // Cleanup: remove temp file
        let _ = std::fs::remove_file(&self.path);
    }
}

Lazy Singleton

use std::sync::OnceLock;

static CONFIG: OnceLock<Config> = OnceLock::new();

fn get_config() -> &'static Config {
    CONFIG.get_or_init(|| {
        Config::load().expect("config required")
    })
}

---

Common Errors

ErrorCauseFix
Resource leakForgot DropImplement Drop or RAII wrapper
Double freeManual memoryLet Rust handle
Use after dropDangling referenceCheck lifetimes
E0509 move out of DropMoving owned fieldOption::take()
Pool exhaustionNot returnedEnsure Drop returns

---

Anti-Patterns

Anti-PatternWhy BadBetter
Manual cleanupEasy to forgetRAII/Drop
lazy_static!External depstd::sync::OnceLock
Global mutable stateThread unsafetyOnceLock or proper sync
Forget to closeResource leakDrop impl

---

Related Skills

WhenSee
Smart pointersm02-resource
Thread-safe initm07-concurrency
Domain scopesm09-domain
Error in cleanupm06-error-handling

Related skills

Forks & variants (1)

M12 Lifecycle has 1 known copy in the catalog totaling 780 installs. They canonicalize to this original listing.

How it compares

Pick m12-lifecycle over syntax-focused Rust skills when the hard problem is when resources live and who cleans them up.

FAQ

What does m12-lifecycle do?

Design Rust resource lifecycles with RAII, Drop, pools, and lazy initialization.

When should I use m12-lifecycle?

User designs RAII, Drop, connection pools, or lazy resource initialization in Rust.

Is m12-lifecycle safe to install?

Review the Security Audits panel on this page before installing in production.

Rustbackend

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.