Skip to content
cccskills
FreePublished on GitHub

windows-compatibility

Review cross-platform code and Git commands for filename, path, and shell compatibility issues. Apply shared timestamp utilities, platform-aware path handling, and file-based commit messages when working across Windows, macOS, and Linux.

OriginalShow the original description

Cross-platform path handling and command patterns

See how to install

Good for

  • Creating timestamped filenames that work on Windows
  • Reviewing path construction and comparison across platforms
  • Writing multiline Git commit messages in PowerShell
  • Finding code that assumes the current directory is the repository root

Files included (1)

  • SKILL.md3.7 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

Context

Squad runs on Windows, macOS, and Linux. Several bugs have been traced to platform-specific assumptions: ISO timestamps with colons (illegal on Windows), git -C with Windows paths (unreliable), forward-slash paths in Node.js on Windows.

Patterns

Filenames & Timestamps

  • Never use colons in filenames: ISO 8601 format 2026-03-15T05:30:00Z is illegal on Windows
  • Use safeTimestamp() utility: Replaces colons with hyphens → 2026-03-15T05-30-00Z
  • Centralize formatting: Don't inline .toISOString().replace(/:/g, '-') — use the utility

Git Commands

  • Never use git -C {path}: Unreliable with Windows paths (backslashes, spaces, drive letters)
  • Always cd first: Change directory, then run git commands
  • Check for changes before commit: git diff --cached --quiet (exit 0 = no changes)

Commit Messages

  • Never embed newlines in -m flag: Backtick-n (\n) fails silently in PowerShell
  • Use temp file + -F flag: Write message to file, commit with git commit -F $msgFile

Paths

  • Never assume CWD is repo root: Always use TEAM ROOT from spawn prompt or run git rev-parse --show-toplevel
  • Use path.join() or path.resolve(): Don't manually concatenate with / or \

Path Comparison (Case Sensitivity)

  • Never use case-sensitive startsWith or === for path comparison on Windows or macOS: These filesystems are case-insensitive — C:\Users\ and c:\users\ refer to the same location
  • Use platform-aware comparison: Check process.platform === 'win32' || process.platform === 'darwin' and lowercase both sides before comparing
  • Pattern:
    const CASE_INSENSITIVE = process.platform === 'win32' || process.platform === 'darwin';
    
    function pathStartsWith(fullPath: string, prefix: string): boolean {
      if (CASE_INSENSITIVE) {
        return fullPath.toLowerCase().startsWith(prefix.toLowerCase());
      }
      return fullPath.startsWith(prefix);
    }
    
  • Where it matters: Security checks (path traversal prevention), rootDir confinement, any path-contains-path validation
  • Linux is case-sensitive: Do NOT lowercase on Linux — /Home/ and /home/ are different directories

Examples

✓ Correct:

// Timestamp utility
const safeTimestamp = () => new Date().toISOString().replace(/:/g, '-').split('.')[0] + 'Z';

// Git workflow (PowerShell)
cd $teamRoot
git add .squad/
if ($LASTEXITCODE -eq 0) {
  $msg = @"
docs(ai-team): session log

Changes:
- Added decisions
"@
  $msgFile = [System.IO.Path]::GetTempFileName()
  Set-Content -Path $msgFile -Value $msg -Encoding utf8
  git commit -F $msgFile
  Remove-Item $msgFile
}

✗ Incorrect:

// Colon in filename
const logPath = `.squad/log/${new Date().toISOString()}.md`; // ILLEGAL on Windows

// git -C with Windows path
exec('git -C C:\\src\\squad add .squad/'); // UNRELIABLE

// Inline newlines in commit message
exec('git commit -m "First line\nSecond line"'); // FAILS silently in PowerShell

Anti-Patterns

  • Testing only on one platform (bugs ship to other platforms)
  • Assuming Unix-style paths work everywhere
  • Using git -C because it "looks cleaner" (it doesn't work)
  • Skipping git diff --cached --quiet check (creates empty commits)
  • Wrong — case-sensitive path check on Windows and macOS:
    if (!resolved.startsWith(rootDir + path.sep)) {
      throw new Error('Path traversal blocked');
    }
    // Fails: 'c:\\Users\\temp\\file'.startsWith('C:\\Users\\temp\\') → false
    

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Coordinate work across AI agents with shared rules for locating team files, recording decisions and their reasons, and requesting help. It also defines who owns revisions after a reviewer rejects an artifact.

  • Locate team files across separate working directories
  • Record decisions that affect other agents
  • Request input from another specialist
github/gh-aw5.4KUpdated Oct 19, 2026

agent-conduct

FreeSummary

Set shared development rules for an agent team: keep specific agent names out of product code, tests, and CI configuration, verify affected tests before finishing, and record lessons learned from mistakes.

  • Share development rules across multiple agents
  • Keep team-specific agent names out of code and tests
  • Check affected tests before declaring work complete
github/gh-aw5.4KUpdated Oct 19, 2026

Route gh-aw design, creation, diagnosis, patching, active debugging, and upgrade requests to the right strategies.

The English summary is being prepared. Showing the original description.

github/gh-aw5.4KUpdated Oct 19, 2026

How to write comprehensive architectural proposals that drive alignment before code is written

The English summary is being prepared. Showing the original description.

github/gh-aw5.4KUpdated Oct 19, 2026

Upgrade gh-aw to latest gh-aw-firewall release and identify follow-up spec tasks.

The English summary is being prepared. Showing the original description.

github/gh-aw5.4KUpdated Oct 19, 2026

Review code that performs git or gh operations against repository checkouts in gh-aw, checking that the right credentials are available at the right time and that sparseness, shallowness and credential-free factors are properly considered.

The English summary is being prepared. Showing the original description.

github/gh-aw5.4KUpdated Oct 19, 2026

See all skills by github

Report a problem with this skill