Use 'bd' CLI for task tracking.
src/contains the TypeScript extension code (commands, views, services, utilities).bundled/tool/contains the Python LSP server and ZenML client wrappers used by the extension.src/test/ts_tests/contains TypeScript tests (Mocha + VS Code test runner).src/test/python_tests/contains Python LSP tests (pytest) andtest_data/fixtures.resources/holds icons and images;dist/andout/are generated build outputs.scripts/provides helper scripts likeclear_and_compile.sh,format.sh, andlint.sh.
npm installinstalls Node dependencies.npm run compilebundles the extension intodist/via webpack.npm run watchrebuilds on file changes for local development.npm run testruns extension tests (pretest compiles and lints first).npm run lintruns ESLint onsrc/.npm run formatformats TS/JSON with Prettier.nox --session setupcreates the Python tool environment for the bundled server.nox --session testsruns pytest insrc/test/python_tests/../scripts/lint.shruns full lint suite (ruff, mypy, eslint, yamlfix) - run before commitsscripts/clear_and_compile.shclears caches and recompiles if the build gets stuck.
- TypeScript follows ESLint rules and Prettier formatting; keep
camelCasefor functions andPascalCasefor classes. - Test files in
src/test/ts_tests/should be named*.test.ts. - Python style for
bundled/tool/is enforced via the nox lint session andscripts/lint.sh.
- TypeScript tests run under the VS Code test runner (Mocha) via
npm run test. - Python tests use pytest; run them with
nox --session tests. - Add tests alongside behavior changes, and place Python fixtures under
src/test/python_tests/test_data/.
- Use Conventional Commits (e.g.,
feat: add stack refresh retry). - Create branches from
developand open PRs againstzenml-io/vscode-zenml. - PRs should include a concise change description and testing notes; link related issues when available.
- Extension settings live in VS Code settings (
zenml.serverUrl,zenml.accessToken,zenml-python.*). - Avoid committing secrets or environment-specific configuration.
When ending a work session, you MUST complete ALL steps below. Work is NOT complete until git push succeeds.
MANDATORY WORKFLOW:
- File issues for remaining work - Create issues for anything that needs follow-up
- Run quality gates (if code changed) - Run
./scripts/lint.shbefore committing - Update issue status - Close finished work, update in-progress items
- PUSH TO REMOTE - This is MANDATORY:
git pull --rebase bd sync git push git status # MUST show "up to date with origin" - Clean up - Clear stashes, prune remote branches
- Verify - All changes committed AND pushed
- Hand off - Provide context for next session
CRITICAL RULES:
- Work is NOT complete until
git pushsucceeds - NEVER stop before pushing - that leaves work stranded locally
- NEVER say "ready to push when you are" - YOU must push
- If push fails, resolve and retry until it succeeds