Contributing
Use this repository workflow when you change the tinx CLI, provider packaging logic, runtime behavior, or the docs site.
Writing style
When you update docs:
- prefer concepts before commands
- keep the layers clear: workspace, provider package, runtime
- explain why first, how second
- keep the mental model consistent across pages
- document implemented behavior, not just parsed schema
Prerequisites
- Go 1.24+
- Node.js and npm for the docs site
Common commands
make build
go test ./...
For the docs site:
cd website
npm install
npm run docs:start
npm run docs:build
Legacy echo-provider helper targets still exist:
make release-example
make install-example
make run-example
make e2e-local
For the current fixture matrix, use the manual commands in TEST_PROVIDERS.md.
Repository layout
cmd/tinx: tinx entrypointinternal/cmd: Cobra command definitionsinternal/core: normalized package model and tool dependency planninginternal/parser: manifest normalization and multi-document parsinginternal/workspace: workspace manifests, sync, and shell filesinternal/oci: OCI packaging and installationinternal/runtime: environment assembly and process execution helpersinternal/runtimes: built-inoci,script, andlocalruntime pluginsinternal/state: tinx home statewebsite/docs/: Docusaurus source docstestdata/: provider fixtures, including legacy, multi-tool, inline, and managed-install examples
Updating documentation
When the CLI or runtime behavior changes:
- update the affected doc pages under
website/docs/ - update
website/sidebars.jsif navigation changes - update
README.mdif the landing flow changes - update
TEST_PROVIDERS.mdif fixture workflows change - re-run
tinx --helpand subcommand help for CLI reference pages - build the docs site before opening a PR
If you add a new concept page, make sure it maps cleanly to one of:
- workspace
- provider package
- runtime
Testing changes
Run the existing Go tests and the Docusaurus build before you send a change for review.
If you touch provider packaging or workspace execution, also run the relevant fixture commands from TEST_PROVIDERS.md. Use make e2e-local when you need to keep the legacy echo-provider flow covered.