wshobson/memory-safety-patterns

RAII、所有権、スマートポインタ、リソース管理を活用し、Rust、C++、C言語にわたってメモリ安全なプログラミングを実装します。安全なシステムコードの作成、リソース管理、メモリバグの防止に使用します。

memory-safety-patterns とは?

このスキルは、Rust、C++、C言語におけるメモリ安全性を確保するためのパターンとベストプラクティスを提供します。RAII(Resource Acquisition Is Initialization)、所有権モデル、スマートポインタ、リソース管理といった主要な概念を網羅し、メモリリーク、ダングリングポインタ、二重解放などの一般的なメモリバグを防止します。具体的なコード例と詳細な説明を通じて、参照カウント、借用チェッカー、ムーブセマンティクスなどのメカニズムを実践的に習得できます。このスキルは、特にシステムプログラミングやパフォーマンスが重要なアプリケーションにおいて、安全で信頼性の高いコードを記述するための開発者を支援します。Claude CodeやCodexといったAIエージェントと連携して、コードレビューや修正提案を自動化することも可能です。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/wshobson/agents/tree/main/skills/memory-safety-patterns

Installed? Explore more 生産性&コラボレーション skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

memory-safety-patterns は何をしますか?

RAII、所有権、スマートポインタ、リソース管理を活用し、Rust、C++、C言語にわたってメモリ安全なプログラミングを実装します。安全なシステムコードの作成、リソース管理、メモリバグの防止に使用します。

概要

このスキルは、メモリ安全性を確保するための設計パターンと実践的なテクニックを提供します。以下の言語における主要な概念をカバーします。

  • Rust: 所有権、借用、ライフタイム、Box、Rc、Arc、RefCell などのスマートポインタ。
  • C++: RAII、std::unique_ptr、std::shared_ptr、std::weak_ptr、ムーブセマンティクス。
  • C: 手動メモリ管理のベストプラクティス(malloc/free の安全な使用、所有権のドキュメント化、スコープベースのクリーンアップパターン)。

使用方法

このスキルは、安全なシステムコードを記述する際に、自動的に適用されるか、明示的に呼び出すことができます。例えば、以下のような場合に使用します。

  • 新しい関数やデータ構造でメモリ管理が必要な場合。
  • 既存のコードにメモリリークや未定義動作の可能性がある場合。
  • リソースの所有権とライフタイムを明確にする必要がある場合。

例:Rustでの所有権の適用

struct Config {
    data: Vec<u8>,
}

fn process(config: Config) {
    // configの所有権がここに移動する
    println!("Processing {} bytes", config.data.len());
    // スコープ終了時にconfigはドロップされる
}

例:C++でのRAIIとスマートポインタ

#include <memory>

class Resource {
public:
    Resource() { /* リソースを取得 */ }
    ~Resource() { /* リソースを解放 */ }
};

void use_resource() {
    auto res = std::make_unique<Resource>();
    // スコープ終了時に自動的に解放される
}

例:Cでの安全なメモリ管理

#include <stdlib.h>
#include <string.h>

typedef struct {
    char* data;
    size_t size;
} Buffer;

Buffer* buffer_create(size_t size) {
    Buffer* buf = malloc(sizeof(Buffer));
    if (!buf) return NULL;
    buf->data = malloc(size);
    if (!buf->data) {
        free(buf);
        return NULL;
    }
    buf->size = size;
    return buf;
}

void buffer_destroy(Buffer* buf) {
    if (buf) {
        free(buf->data);
        free(buf);
    }
}

主要なパターン

パターン説明主な言語
RAIIリソース取得と解放をオブジェクトのライフタイムにバインドC++, Rust
所有権各リソースは唯一の所有者を持つRust
スマートポインタ自動メモリ管理のためのポインタラッパーC++, Rust
借用所有権を移さずに一時的にアクセスRust
ライフタイム参照の有効期間を静的に検証Rust
スコープガードスコープ終了時の自動クリーンアップC, C++

注意事項

  • Rustでは、コンパイラが所有権と借用のルールを強制するため、メモリ安全なコードが保証されます。
  • **C++**では、RAIIとスマートポインタを積極的に使用し、生のnew/deleteを避けてください。
  • Cでは、リソース管理をドキュメント化し、クリーンアップ関数を一貫して使用することが重要です。

参考リンク

ライセンス

このスキルは、MITライセンスの下で提供されます。

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

wshobson/accessibility-compliance

Implement WCAG 2.2 compliant interfaces with mobile accessibility, inclusive design patterns, and assistive technology support. Use when auditing accessibility, implementing ARIA patterns, building for screen readers, or ensuring inclusive user experiences.

wshobson/airflow-dag-patterns

Build production Apache Airflow DAGs with best practices for operators, sensors, testing, and deployment. Use when creating data pipelines, orchestrating workflows, or scheduling batch jobs.

wshobson/angular-migration

Migrate from AngularJS to Angular using hybrid mode, incremental component rewriting, and dependency injection updates. Use when upgrading AngularJS applications, planning framework migrations, or modernizing legacy Angular code.

wshobson/anti-reversing-techniques

Understand anti-reversing, obfuscation, and protection techniques encountered during software analysis. Use this skill when analyzing malware evasion techniques, when implementing anti-debugging protections for CTF challenges, when reverse engineering packed binaries, or when building security research tools that need to detect virtualized environments.

wshobson/api-design-principles

Master REST and GraphQL API design principles to build intuitive, scalable, and maintainable APIs that delight developers. Use when designing new APIs, reviewing API specifications, or establishing API design standards.

wshobson/architecture-decision-records

Write and maintain Architecture Decision Records (ADRs) following best practices for technical decision documentation. Use when documenting significant technical decisions, reviewing past architectural choices, or establishing decision processes.

wshobson/architecture-patterns

Implement proven backend architecture patterns including Clean Architecture, Hexagonal Architecture, and Domain-Driven Design. Use this skill when designing clean architecture for a new microservice, when refactoring a monolith to use bounded contexts, when implementing hexagonal or onion architecture patterns, or when debugging dependency cycles between application layers.

wshobson/async-python-patterns

Master Python asyncio, concurrent programming, and async/await patterns for high-performance applications. Use when building async APIs, concurrent systems, or I/O-bound applications requiring non-blocking operations.

wshobson/attack-tree-construction

Build comprehensive attack trees to visualize threat paths. Use when mapping attack scenarios, identifying defense gaps, or communicating security risks to stakeholders.

wshobson/auth-implementation-patterns

Master authentication and authorization patterns including JWT, OAuth2, session management, and RBAC to build secure, scalable access control systems. Use when implementing auth systems, securing APIs, or debugging security issues.

wshobson/avoid-ai-writing

Audit and rewrite prose so it stops reading as machine-generated. Use this skill when asked to remove AI-isms, clean up AI writing, edit a draft for AI tells, audit a README, changelog, release note, PR description, or blog post for machine-sounding prose, or make text sound less like AI. Supports a detect-only mode, a rewrite mode, and an edit-in-place mode, with optional voice and context profiles.

wshobson/backtesting-frameworks

Build robust backtesting systems for trading strategies with proper handling of look-ahead bias, survivorship bias, and transaction costs. Use when developing trading algorithms, validating strategies, or building backtesting infrastructure.

wshobson/bash-defensive-patterns

Master defensive Bash programming techniques for production-grade scripts. Use when writing robust shell scripts, CI/CD pipelines, or system utilities requiring fault tolerance and safety.

wshobson/bats-testing-patterns

Master Bash Automated Testing System (Bats) for comprehensive shell script testing. Use when writing tests for shell scripts, CI/CD pipelines, or requiring test-driven development of shell utilities.

wshobson/bazel-build-optimization

Optimize Bazel builds for large-scale monorepos. Use when configuring Bazel, implementing remote execution, or optimizing build performance for enterprise codebases.

wshobson/before-you-build

Pre-build product and feature risk review for founders, product managers, and AI-assisted builders. Use this skill when the user is about to build a landing page, MVP, SaaS product, internal tool, agent workflow, or major feature and needs to check demand, positioning, monetization, retention, trust, distribution, and adoption risk before implementation starts.

wshobson/billing-automation

Build automated billing systems for recurring payments, invoicing, subscription lifecycle, and dunning management. Use when implementing subscription billing, automating invoicing, or managing recurring payment systems.

wshobson/binary-analysis-patterns

Master binary analysis patterns including disassembly, decompilation, control flow analysis, and code pattern recognition. Use when analyzing executables, understanding compiled code, or performing static analysis on binaries.

wshobson/block-no-verify-hook

Configure a PreToolUse hook to prevent AI agents from skipping git pre-commit hooks with --no-verify and other bypass flags. Use when setting up Claude Code projects that enforce commit quality gates.

wshobson/brand-landingpage

Brand-first landing page designer — runs a brand-identity interview (colors, typography, shape language), then generates and iterates on a polished landing page via Stitch with deployment-ready HTML. Use when the user asks to create, design, or build a landing page, homepage, or marketing page and has no established visual direction. Skip when they have a design mockup, need a dashboard or app UI, are working at component level, building a multi-page app, or restyling with known design tokens — use frontend-design instead.

関連スキル