aj-geddes/useful-ai-prompts14 files

Cross Platform Compatibility

>

Specification
Skill ID
aj-geddes/useful-ai-prompts/cross-platform-compatibility
Publisher
aj-geddes
Repository
useful-ai-prompts
Installs
0
Files
14
Synced
Sep 23, 2026
How to use it

Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.

aj-geddes/useful-ai-prompts/cross-platform-compatibilityInstalls these files
  • SKILL.md
  • references/build-configuration.md
  • references/character-encoding.md
  • references/environment-variables.md
  • references/file-path-handling.md
  • references/file-permissions.md
  • references/line-endings.md
  • references/platform-detection.md
  • references/platform-specific-dependencies.md
  • references/process-management.md
  • references/shell-commands.md
  • references/testing-across-platforms.md
  • scripts/scaffold-tests.sh
  • templates/test-template.js

What this skill tells the agent

Cross-Platform Compatibility

Table of Contents

  • Overview
  • When to Use
  • Quick Start
  • Reference Guides
  • Best Practices

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

Use this skill in a project

Open any RiverX project, search the Skills panel for aj-geddes/useful-ai-prompts/cross-platform-compatibility, and install it in one click.

Use this skill