Contributions must preserve the module's small public contract and use synthetic data only. Never submit real Codex rollouts, OpenCode exports, credentials, private source code, real user paths, or real session IDs.
- Exported functions use an approved PowerShell
Verb-SingularNounname. - Public parameter names are explicitly declared in PascalCase.
- Spell product names as
OpenCode,Codex, andPowerShellin code, help, and documentation. - Put each exported function in
src/OpenCode.ImportCodex/Public/with a matching file name. - Put non-exported implementation functions in
src/OpenCode.ImportCodex/Private/. - Keep the export lists in
OpenCode.ImportCodex.psd1andOpenCode.ImportCodex.psm1exact and synchronized. - Do not expose private implementation controls as public parameters.
Every public function requires comment-based help with a synopsis, description,
description for every public parameter, output type, and at least two examples.
Examples must use portable paths such as Join-Path $HOME '...' or repository
relative ./... paths. Use short synthetic identifiers that cannot be mistaken
for published user data.
All fixtures and generated inputs must be demonstrably synthetic. Extend the
committed synthetic fixture for focused fidelity behavior or use
tests/Support/New-SyntheticCodexData.ps1 for generated volume and shape tests.
Do not sanitize and commit a real transcript.
Generated data belongs only under tests/.generated/ or
tests/Benchmarks/.generated/. Preserve marker-file checks around recursive
cleanup.
Run from the repository root:
./tests/Invoke-AllTests.ps1 -Preset TinyWhen an OpenCode CLI is available, also run the isolated import test:
./tests/Invoke-AllTests.ps1 -Preset Tiny -TestOpenCodeImportFor converter performance changes, record a benchmark using only generated data:
./tests/Benchmarks/Measure-CodexSessionConversion.ps1 -Preset MediumSee docs/Testing.md for generator, benchmark, and platform
coverage details.