CI Integration
The safest CI story is not complicated. It is just strict about the public contract.
The Minimal CI Gate
For most authored projects, this is the baseline:
plugin-kit-ai doctor .
plugin-kit-ai generate .
plugin-kit-ai validate . --platform <target> --strictIf your lane has stable smoke tests or bundle checks, add them after the validation gate instead of replacing it.
Why This Works
doctorcatches missing runtime prerequisites earlygenerateproves that generated outputs can be reproduced from authored statevalidate --strictproves that the repo is internally consistent for the chosen target- for a multi-target repo, the same logic should hold for each target in the support scope
Runtime-Specific Notes
Go
Go is the cleanest CI path because the execution machine does not need Python or Node just to satisfy the runtime lane.
Node/TypeScript
Add bootstrap explicitly:
plugin-kit-ai doctor .
plugin-kit-ai bootstrap .
plugin-kit-ai generate .
plugin-kit-ai validate . --platform codex-runtime --strictPython
Use the same pattern as Node and make the Python version explicit in CI.
Common CI Mistakes
- running
validate --strictwithoutgenerate - treating generated artifacts as manually maintained files
- forgetting runtime prerequisites for Node or Python lanes
- promising compatibility for a target that is outside the stable support boundary
Recommended Rule
If CI cannot reproduce the authored outputs and pass validate --strict, the repo is not ready for stable handoff. For a multi-target repo, that means an explicit green run for each target inside the support scope.
Pair this page with Production Readiness, Support Boundary, and Troubleshooting.