smartem-workspace
CLI tool to automate SmartEM multi-repo workspace setup.
Installation
# Run directly with uvx (recommended)
uvx smartem-workspace init
# Or install globally
uv tool install smartem-workspace
Usage
Global options
--no-color Disable colored output
--plain Plain mode: no color, no interactive prompts
Initialize a new workspace
# Interactive setup in current directory
smartem-workspace init
# Specify target directory
smartem-workspace init --path ~/dev/smartem
# Use a preset (skip repo selection)
smartem-workspace init --preset smartem-core
# Non-interactive with preset
smartem-workspace init --preset full --no-interactive
Available presets
| Preset | Description |
|---|---|
smartem-core |
Core SmartEM repos (decisions, frontend, devtools) |
full |
All 30+ repos including ARIA reference |
aria-reference |
ARIA ecosystem repos for reference |
minimal |
Just smartem-devtools (workspace setup only) |
Verify workspace setup
# Check all configuration
smartem-workspace check
# Check specific scope
smartem-workspace check --scope claude
smartem-workspace check --scope repos
smartem-workspace check --scope serena
# Auto-repair fixable issues (broken symlinks, missing dirs)
smartem-workspace check --fix
Sync repositories
# Pull latest from all cloned repos
smartem-workspace sync
# Preview what would be pulled
smartem-workspace sync --dry-run
Sync skips repos with uncommitted changes or not on main/master branch.
Other commands
# Show workspace status (alias for check)
smartem-workspace status
# Set up Claude Code integration (after init without --with-claude)
smartem-workspace claude setup
# Add a single repo (not yet implemented)
smartem-workspace add DiamondLightSource/smartem-frontend
Init options
--path PATH Target directory (default: current directory)
--preset NAME Use preset: smartem-core, full, aria-reference, minimal
--no-interactive Skip prompts, use preset only
--git-ssh Force SSH URLs for all repos
--git-https Force HTTPS URLs (skip auto-detection)
--with-claude Enable Claude Code integration setup
--skip-serena Skip Serena MCP setup
--skip-dev-requirements Skip developer requirements check
Git URL auto-detection: By default, the CLI automatically detects if you have SSH authentication configured for GitHub. If SSH works, repos are cloned via SSH (enabling push); otherwise HTTPS is used (read-only). Use --git-ssh or --git-https to override.
Check options
--scope SCOPE Check scope: dev-requirements, claude, repos, serena, or all (default: all)
--fix Attempt to fix issues (recreate symlinks, dirs)
--offline Use bundled config instead of fetching from GitHub
Sync options
--dry-run, -n Show what would be done without making changes
What it sets up
- Repository clones - Organized by organization (DiamondLightSource, FragmentScreen, GitlabAriaPHP)
- Claude Code configuration (with
--with-claude) - Skills, settings, permissions - Serena MCP server - Semantic code navigation
- Workspace structure - tmp/, testdata/ directories
Documentation
- User Guide: Setup SmartEM Workspace
- Developer Guide: Contributing to smartem-workspace
- PyPI Setup: Publishing to PyPI
- API Documentation: SmartEM Devtools Docs
Development
cd packages/smartem-workspace
# Install dev dependencies
uv sync --all-extras
# Run tests
uv run pytest
# Run linter
uv run ruff check .
# Build package
uv build
See Developer Guide for detailed development instructions.
Releasing
Releases are published to PyPI via GitHub Actions using Trusted Publishers.
# 1. Update version in pyproject.toml
# 2. Commit the change
git commit -am "chore: release smartem-workspace vX.Y.Z"
# 3. Create and push a version tag
git tag smartem-workspace-vX.Y.Z
git push origin main --tags
The CI workflow runs tests, builds the package, and publishes to PyPI automatically on tag push.
Links
- PyPI: https://pypi.org/project/smartem-workspace/
- Repository: https://github.com/DiamondLightSource/smartem-devtools
- Issues: https://github.com/DiamondLightSource/smartem-devtools/issues
- Changelog: GitHub Releases
License
Apache-2.0
Metadata
Release files for smartem-workspace 0.6.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| smartem_workspace-0.6.1.tar.gz | 59.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| smartem_workspace-0.6.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 92.8 kB
Release files / smartem_workspace-0.6.1.tar.gz
| Download URL | smartem_workspace-0.6.1.tar.gz |
|---|---|
| Size | 59.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a62f43f7048dc4b7557e840dc4eaeca4f8735a510cf6786843f60d68f5ebaa18
|
|
BLAKE2b-256 checksum How to use checksums |
d9ccc905d43ccf9dfa2d4f946d869bd501d522fae0c2ce8d69fc86c3226667a4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 14, 2026.
Transparency logRelease files / smartem_workspace-0.6.1-py3-none-any.whl
| Download URL | smartem_workspace-0.6.1-py3-none-any.whl |
|---|---|
| Size | 33.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
cc4e698cf5d59017f3ae8a12d23ebb590134f504bb395adc30372ae85ba73827
|
|
BLAKE2b-256 checksum How to use checksums |
a47b08967712e4b01a5db05a3eb4d1f5252f27742f3d67c18f93a983b9927cd4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 14, 2026.
Transparency log