Skip to content

Conversation

@edithatogo
Copy link

@edithatogo edithatogo commented Jan 31, 2026

Closes #21.

This PR transitions the build and sync system from PowerShell to Node.js to ensure cross-platform compatibility and simplifies the repository documentation.

Changes

  • New Node.js scripts: scripts/sync-adapters.js, scripts/validate-adapters.js.
  • Added package.json for standardized npm workflows (
    pm run sync,
    pm run validate).
  • Standardized AGENTS.md and README.md.
  • Removed legacy PowerShell scripts.

Dylan Mordaunt (Illawarra Shoalhaven LHD) added 30 commits January 25, 2026 17:16
Dylan Mordaunt (Illawarra Shoalhaven LHD) added 27 commits January 31, 2026 19:15
Copilot AI review requested due to automatic review settings January 31, 2026 12:04
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR transitions the Humanizer project's build system from PowerShell to Node.js and Python to achieve true cross-platform compatibility. It introduces modular source fragments, comprehensive testing with 100% coverage requirements, strict linting/type checking, and streamlines documentation by migrating from WARP.md to the standard AGENTS.md format.

Changes:

  • Replaces PowerShell scripts with Node.js (sync/validate) and Python (sync/validate/install) equivalents
  • Adds comprehensive test suite with pytest achieving 100% coverage for Python scripts
  • Introduces modular skill compilation from src/ fragments to generate SKILL.md and SKILL_PROFESSIONAL.md variants
  • Migrates documentation to AGENTS.md standard and updates README.md with new build workflows
  • Adds development tooling: pyproject.toml with strict Ruff/Mypy config, pre-commit hooks, CI/CD workflow, Vale prose linting

Reviewed changes

Copilot reviewed 180 out of 182 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
scripts/sync-adapters.js Node.js script to compile skills from fragments and sync metadata to adapters
scripts/validate-adapters.js Node.js validation script checking adapter metadata alignment
scripts/sync_adapters.py Python equivalent of sync script with UTC timezone handling
scripts/validate_adapters.py Python validation with proper error handling and exit codes
scripts/install_adapters.py Python installer for deploying adapters to workspace/user directories
tests/*.py Comprehensive pytest suite with 100% coverage target
package.json npm configuration defining sync/validate/lint workflows
pyproject.toml Strict Python tooling config (Ruff, Mypy, pytest with 100% coverage)
README.md Streamlined documentation focusing on Node.js build system
AGENTS.md New standard manifest replacing WARP.md
scripts/*.cmd Legacy Windows wrappers (broken - reference removed PowerShell scripts)

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

logger.error("Error: %s", e) # noqa: TRY400
return

today = datetime.now(tz=timezone.utc).strftime("%Y-%m-%d")
Copy link

Copilot AI Jan 31, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Node.js script generates sync dates dynamically using 'new Date().toISOString().split('T')[0]', which correctly produces dates like '2026-01-31'. However, the Python script uses 'datetime.now(tz=timezone.utc).strftime("%Y-%m-%d")' which should also work but creates a subtle behavioral difference between the two implementations. For true cross-platform consistency, ensure both scripts use the same timezone handling approach, or document why they differ.

Copilot uses AI. Check for mistakes.
Comment on lines +1 to +2
@echo off
powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0sync-adapters.ps1" %*
Copy link

Copilot AI Jan 31, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The PR description states "Removed legacy PowerShell scripts" but PowerShell wrapper scripts are still present (scripts/sync-adapters.cmd, scripts/validate-adapters.cmd, scripts/install-adapters.cmd). These .cmd files invoke PowerShell scripts that may no longer exist. If the PowerShell scripts were removed but the .cmd wrappers remain, these wrappers will fail. Either remove the .cmd files or update them to call the Python/Node.js equivalents.

Copilot uses AI. Check for mistakes.
Comment on lines +1 to +2
@echo off
powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0validate-adapters.ps1" %*
Copy link

Copilot AI Jan 31, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The .cmd wrapper references a PowerShell script that may have been removed according to the PR description. This file will fail if the underlying PowerShell script no longer exists. Update to call the Python equivalent or remove this wrapper entirely.

Copilot uses AI. Check for mistakes.
Comment on lines +1 to +2
@echo off
powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0install-adapters.ps1" %*
Copy link

Copilot AI Jan 31, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The .cmd wrapper references a PowerShell script that may have been removed. This breaks the claimed cross-platform compatibility. Either update to invoke the Python script or remove this wrapper file.

Copilot uses AI. Check for mistakes.
@@ -0,0 +1,53 @@
import fs from 'fs';
import path from 'path';
Copy link

Copilot AI Jan 31, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unused import path.

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: cross-platform build system migration (Node.js)

1 participant