Development
Application checks
npm ci
npm run check
node dist/cli.js --help
The test suite uses Vitest. TypeScript is configured in strict NodeNext mode, with unchecked indexed access and exact optional-property types enabled.
The supported PowerShell equivalent is:
./run.ps1 -Mode Test
Docker image
The production image uses a Node.js 24 build stage and installs production
dependencies in a slim runtime stage. It runs as the unprivileged user
subzerodev with UID 10001.
On Linux, bind-mounted directories may require running the container with the
host UID and GID. The PowerShell runner handles that automatically unless
-DockerUser is supplied.
Documentation
Authored pages live under docs/docs/, grouped into guide/, reference/, and decisions/
sections plus a few top-level pages, with sidebar_position front matter setting reading order
within each level. The site homepage — docs/src/pages/index.md, not docs/docs/index.md — is
generated from README.md. Do not edit it directly; after changing the README, regenerate it:
./docs.ps1 -BuildOnly
docs.ps1 needs Docker. Without it, invoke the generator directly with the arguments recorded in
.config/DocumentationRules.psd1:
./build/ConvertTo-DocumentationHomepage.ps1 -ReadmePath ./README.md `
-Title 'SubZeroDev GitHub Plugin' `
-Description 'CLI-first GitHub integration that produces provider-independent, versioned project data.' `
-SiteUrl 'https://plugins-github.subzerodev.com/' -RouteBasePath 'docs' `
-OutputPath docs/src/pages/index.md
Then validate:
./build/Test-Documentation.ps1
The documentation build uses the shared template image pinned by immutable
digest. Pull requests run the Markdown gate and a production-equivalent build.
Pushes to main build and deploy through GitHub Pages.
Before committing
npm run check
node dist/cli.js --help
./build/Test-Documentation.ps1
git diff --check