mcpField
C
cross-platform-compatibility

cross-platform-compatibility

github.com/aj-geddes開発373481 回インストール34 週間前に更新
リポジトリ

cross-platform-compatibility について

Windows、macOS、Linuxで動作するコードの作成を支援する開発スキルです。パス、プラットフォーム検出、環境変数、OS固有の動作、テスト戦略を扱い、クロスプラットフォームCLIツールのガイドも含みます。

主な機能

  1. 01移植性のあるファイルパス処理
  2. 02実行時のプラットフォーム検出
  3. 03改行コードと文字エンコーディング
  4. 04環境変数の処理
  5. 05クロスプラットフォームテストの指針
  6. 06ビルドと依存関係の指針

活用シーン

  1. 01複数OS向けの開発
  2. 02ファイルシステム操作の処理
  3. 03クロスプラットフォームCLIツールの作成
  4. 04OS固有の依存関係の管理

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/aj-geddes/useful-ai-prompts --skill cross-platform-compatibility

インストール後、Claude Code で/cross-platform-compatibilityを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
build-configuration.md
character-encoding.md
environment-variables.md
file-path-handling.md
file-permissions.md
line-endings.md
platform-detection.md
platform-specific-dependencies.md
process-management.md
shell-commands.md
testing-across-platforms.md
scripts/
scaffold-tests.sh
templates/
test-template.js

詳細

クロスプラットフォーム対応

目次

概要

Windows、macOS、Linux でシームレスに動作するコードを書くための包括的なガイドです。ファイルパスの処理、環境の検出、プラットフォーム固有の機能、テスト戦略を扱います。

使用する場面

  • 複数のオペレーティングシステム向けのアプリケーションを構築する
  • ファイルシステムの操作を処理する
  • プラットフォーム固有の依存関係を管理する
  • オペレーティングシステムとアーキテクチャを検出する
  • 環境変数を扱う
  • クロスプラットフォームの CLI ツールを構築する
  • 改行コードや文字エンコーディングに対処する
  • プラットフォーム固有のビルドプロセスを管理する

クイックスタート

最小限の実行可能な例:

// ❌ BAD: Hardcoded paths with platform-specific separators
const configPath = "C:\\Users\\user\\config.json"; // Windows only
const dataPath = "/home/user/data.txt"; // Unix only

// ✅ GOOD: Use path module
import path from "path";
import os from "os";

// Platform-independent path construction
const configPath = path.join(os.homedir(), "config", "app.json");
const dataPath = path.join(process.cwd(), "data", "users.txt");

// Resolve relative paths
const absolutePath = path.resolve("./config/settings.json");

// Get path components
const dirname = path.dirname("/path/to/file.txt"); // '/path/to'
const basename = path.basename("/path/to/file.txt"); // 'file.txt'
const extname = path.extname("/path/to/file.txt"); // '.txt'

// Normalize paths (handle .. and .)
const normalized = path.normalize("/path/to/../file.txt"); // '/path/file.txt'

リファレンスガイド

references/ ディレクトリにある詳細な実装:

ガイド内容
ファイルパスの処理ファイルパスの処理
プラットフォームの検出プラットフォームの検出
改行コード改行コード
環境変数環境変数
シェルコマンドシェルコマンド
ファイルのアクセス許可ファイルのアクセス許可
プロセス管理プロセス管理
プラットフォーム固有の依存関係プラットフォーム固有の依存関係
プラットフォームをまたいだテストプラットフォームをまたいだテスト
文字エンコーディング文字エンコーディング
ビルド設定ビルド設定

ベストプラクティス

✅ 推奨事項
  • パスには path.join() または path.resolve() を使用する
  • 改行コードには os.EOL を使用する
  • 必要に応じて実行時にプラットフォームを検出する
  • 対象となるすべてのプラットフォームでテストする
  • プラットフォーム固有のモジュールには optionalDependencies を使用する
  • ファイルのアクセス許可を適切に処理する
  • ユーザー入力にはシェルエスケープを使用する
  • テキストファイルの改行コードを正規化する
  • デフォルトで UTF-8 エンコーディングを使用する
  • プラットフォーム固有の動作を文書化する
  • プラットフォーム固有の機能に代替手段を用意する
  • CI/CD を使用して複数のプラットフォームでテストする
❌ 禁止事項
  • バックスラッシュやスラッシュを使ったファイルパスをハードコードする
  • Unix 専用の機能(シグナル、アクセス許可、シンボリックリンク)を前提とする
  • Windows 固有の仕様(ドライブ文字、UNC パス)を無視する
  • 代替手段なしでプラットフォーム固有のコマンドを使用する
  • ファイルシステムで大文字と小文字が区別されると前提とする
  • 改行コードの違いを考慮しない
  • 確認せずにプラットフォーム固有の API を使用する
  • 環境変数へのアクセス方法をハードコードする
  • 文字エンコーディングの問題を無視する

コメント