Thanks for helping improve Sandbox Console. The codebase is small and the workflow is simple, but a few conventions are load-bearing — please read this before opening a PR.
- Node.js 20+
- VS Code 1.90+
- Docker Sandboxes (
sbx) installed and signed in — required for manual testing; the extension is a thin orchestration layer over thesbxCLI.
npm install— dependencies.npm run verify— the single verification command: strict typecheck (tsc --noEmit) + esbuild bundle. Esbuild bundles without type-checking, so the typecheck insideverifyis the real correctness gate. CI runs this same command.npm run build— bundle todist/extension.js(esbuild), no typecheck.npm run watch— rebuild on change.npm run package— produce a.vsix(vsce).
Run/debug: open the folder in VS Code and press F5 (Extension Development Host).
There is no test runner yet; verification is npm run verify + a manual run + direct
sbx probing. "Build is green" = npm run verify exits 0 — CI enforces it on pushes
and pull requests targeting main.
docs/Features.mdis authoritative for behaviour — citeFR-0xxIDs in code and commit messages for traceability.- Read
docs/Architecture.mdbefore changing backend behaviour, and verify anysbxCLI assumption against the upstream Docker Sandboxes docs. - Substantial changes follow the documentation model (see
CLAUDE.md): add the nextdocs/specs/drafts/00N - <Iteration>.mdspec describing what/why, and updateFeatures.md/Architecture.mdto match in the same PR — the canonical docs must never drift from shipped code. When the change ships, the spec's status flips to shipped and the file moves todocs/specs/completed/; numbering runs continuously across both folders. Specs are immutable once merged. - Keep
sbxCLI strings insrc/sbx.ts(all child-process invocations) andsrc/terminal.ts(the interactivesbx run/execshellArgs) — those two modules only. One deliberate carve-out: the bash template insrc/script.tsrenders sbx calls into the generated.sandbox/scripts/sbx.sh(FR-052) for external shells — the extension itself never executes them; keep that template mirroringsbx.ts/ops.tswhen CLI shapes change. - Keep changes minimal and focused; match the existing code style.
- Branching follows gitflow:
feature/<slug>,bugfix/<slug>,hotfix/<slug>,release/<x.y.z>. Never commit directly tomain; every pull request targetsmain. - Commit messages are one meaningful English sentence with a capital first letter,
describing what was done — e.g.
Added secret provisioning form for sandbox credentials. No prefixes (feat:), no[]brackets. CiteFR-0xxIDs where relevant. - No identity trailers in commit messages or PR bodies (no
Co-Authored-By, no names, no e-mail addresses). - Before you commit,
npm run verifymust be green.
Do not report security vulnerabilities in public issues or pull requests. Use the private reporting channel described in SECURITY.md.
Contributions are accepted under the MIT License: by opening a pull request you agree that your contribution is licensed under the same terms as the project.