-
Notifications
You must be signed in to change notification settings - Fork 302
feat: migrate build system to Node.js and streamline documentation #20
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
…apters.py' as complete
…idate_adapters.py' as complete
…all_adapters.py' as complete
There was a problem hiding this 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") |
Copilot
AI
Jan 31, 2026
There was a problem hiding this comment.
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.
| @echo off | ||
| powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0sync-adapters.ps1" %* |
Copilot
AI
Jan 31, 2026
There was a problem hiding this comment.
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.
| @echo off | ||
| powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0validate-adapters.ps1" %* |
Copilot
AI
Jan 31, 2026
There was a problem hiding this comment.
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.
| @echo off | ||
| powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0install-adapters.ps1" %* |
Copilot
AI
Jan 31, 2026
There was a problem hiding this comment.
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.
| @@ -0,0 +1,53 @@ | |||
| import fs from 'fs'; | |||
| import path from 'path'; | |||
Copilot
AI
Jan 31, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Unused import path.
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
pm run sync,
pm run validate).