mcpField
C
cross-platform-compatibility

cross-platform-compatibility

github.com/aj-geddesDevelopment373481 installsUpdated 34w ago
Repository

About cross-platform-compatibility

A development skill for writing code that works across Windows, macOS, and Linux. It covers paths, platform detection, environment variables, platform-specific behavior, and testing strategies, including guidance for cross-platform CLI tools.

Key features

  1. 01Portable file path handling
  2. 02Runtime platform detection
  3. 03Line endings and encoding
  4. 04Environment variable handling
  5. 05Cross-platform testing guidance
  6. 06Build and dependency guidance

Use cases

  1. 01Building for multiple operating systems
  2. 02Handling filesystem operations
  3. 03Creating cross-platform CLI tools
  4. 04Managing platform-specific dependencies

Install

Copy the command and run it in a terminal.

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

After installing, type/cross-platform-compatibilityin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with 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

Details

From the project README

Cross-Platform Compatibility

Table of Contents

Overview

Comprehensive guide to writing code that works seamlessly across Windows, macOS, and Linux. Covers file path handling, environment detection, platform-specific features, and testing strategies.

When to Use

  • Building applications for multiple operating systems
  • Handling file system operations
  • Managing platform-specific dependencies
  • Detecting operating system and architecture
  • Working with environment variables
  • Building cross-platform CLI tools
  • Dealing with line endings and character encodings
  • Managing platform-specific build processes

Quick Start

Minimal working example:

// ❌ 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'

Reference Guides

Detailed implementations in the references/ directory:

GuideContents
File Path HandlingFile Path Handling
Platform DetectionPlatform Detection
Line EndingsLine Endings
Environment VariablesEnvironment Variables
Shell CommandsShell Commands
File PermissionsFile Permissions
Process ManagementProcess Management
Platform-Specific DependenciesPlatform-Specific Dependencies
Testing Across PlatformsTesting Across Platforms
Character EncodingCharacter Encoding
Build ConfigurationBuild Configuration

Best Practices

✅ DO
  • Use path.join() or path.resolve() for paths
  • Use os.EOL for line endings
  • Detect platform at runtime when needed
  • Test on all target platforms
  • Use optionalDependencies for platform-specific modules
  • Handle file permissions gracefully
  • Use shell escaping for user input
  • Normalize line endings in text files
  • Use UTF-8 encoding by default
  • Document platform-specific behavior
  • Provide fallbacks for platform-specific features
  • Use CI/CD to test on multiple platforms
❌ DON'T
  • Hardcode file paths with backslashes or forward slashes
  • Assume Unix-only features (signals, permissions, symlinks)
  • Ignore Windows-specific quirks (drive letters, UNC paths)
  • Use platform-specific commands without fallbacks
  • Assume case-sensitive file systems
  • Forget about different line endings
  • Use platform-specific APIs without checking
  • Hardcode environment variable access patterns
  • Ignore character encoding issues

Comments

Markdown supported