CLI tool to automate SmartEM multi-repo workspace setup
Project description
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
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
# 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
--ssh Use SSH URLs (default: HTTPS)
--skip-claude Skip Claude Code setup
--skip-serena Skip Serena MCP setup
Check options
--scope SCOPE Check scope: 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 - Skills, settings, permissions
- Serena MCP server - Semantic code navigation
- Workspace structure - CLAUDE.md, 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
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file smartem_workspace-0.2.1.tar.gz.
File metadata
- Download URL: smartem_workspace-0.2.1.tar.gz
- Upload date:
- Size: 54.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0f348520ca87d979afaa6701900a032f346b953cad67f9b553863b4779999664
|
|
| MD5 |
25527ed1ed297bddfd94f93185ced931
|
|
| BLAKE2b-256 |
184f7c00fbf2272fa0323404f599eedcc08d12c55b911b276166d4d47dcbac62
|
Provenance
The following attestation bundles were made for smartem_workspace-0.2.1.tar.gz:
Publisher:
publish-smartem-workspace.yml on DiamondLightSource/smartem-devtools
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
smartem_workspace-0.2.1.tar.gz -
Subject digest:
0f348520ca87d979afaa6701900a032f346b953cad67f9b553863b4779999664 - Sigstore transparency entry: 823035003
- Sigstore integration time:
-
Permalink:
DiamondLightSource/smartem-devtools@b05a515b7aaf6541d90a58b83aa88efbff0f3471 -
Branch / Tag:
refs/tags/smartem-workspace-v0.2.1 - Owner: https://github.com/DiamondLightSource
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-smartem-workspace.yml@b05a515b7aaf6541d90a58b83aa88efbff0f3471 -
Trigger Event:
push
-
Statement type:
File details
Details for the file smartem_workspace-0.2.1-py3-none-any.whl.
File metadata
- Download URL: smartem_workspace-0.2.1-py3-none-any.whl
- Upload date:
- Size: 26.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aa48194f79e8a0f3e19d5b65b9411c15a813d64f362eee602e25134f6db76a8a
|
|
| MD5 |
943730aa17600786de0126de0dc26749
|
|
| BLAKE2b-256 |
ab98d1dd6fd8508c4c8ba8eca9997c63e6fee018d57f27abb7b4573975adfc02
|
Provenance
The following attestation bundles were made for smartem_workspace-0.2.1-py3-none-any.whl:
Publisher:
publish-smartem-workspace.yml on DiamondLightSource/smartem-devtools
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
smartem_workspace-0.2.1-py3-none-any.whl -
Subject digest:
aa48194f79e8a0f3e19d5b65b9411c15a813d64f362eee602e25134f6db76a8a - Sigstore transparency entry: 823035046
- Sigstore integration time:
-
Permalink:
DiamondLightSource/smartem-devtools@b05a515b7aaf6541d90a58b83aa88efbff0f3471 -
Branch / Tag:
refs/tags/smartem-workspace-v0.2.1 - Owner: https://github.com/DiamondLightSource
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-smartem-workspace.yml@b05a515b7aaf6541d90a58b83aa88efbff0f3471 -
Trigger Event:
push
-
Statement type: