Skip to main content

CLI tool to automate SmartEM multi-repo workspace setup

Project description

smartem-workspace

PyPI version Python Versions License CI

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

  1. Repository clones - Organized by organization (DiamondLightSource, FragmentScreen, GitlabAriaPHP)
  2. Claude Code configuration (with --with-claude) - Skills, settings, permissions
  3. Serena MCP server - Semantic code navigation
  4. Workspace structure - tmp/, testdata/ directories

Documentation

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

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

smartem_workspace-0.5.0.tar.gz (58.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

smartem_workspace-0.5.0-py3-none-any.whl (32.7 kB view details)

Uploaded Python 3

File details

Details for the file smartem_workspace-0.5.0.tar.gz.

File metadata

  • Download URL: smartem_workspace-0.5.0.tar.gz
  • Upload date:
  • Size: 58.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for smartem_workspace-0.5.0.tar.gz
Algorithm Hash digest
SHA256 586d8b327399259984656d2c41ed0430666aef9007c2c93fb2af8fd21ff7c4a3
MD5 7c3a554ae636140a7c8252568c1e5d67
BLAKE2b-256 6477af18854383c2132e8e35770781dbbd2d22a828889e2162d4987d14b68d56

See more details on using hashes here.

Provenance

The following attestation bundles were made for smartem_workspace-0.5.0.tar.gz:

Publisher: release-smartem-workspace.yml on DiamondLightSource/smartem-devtools

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file smartem_workspace-0.5.0-py3-none-any.whl.

File metadata

File hashes

Hashes for smartem_workspace-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7262f42bc5472137a8c4ed8bddfe64a4542c7a3a64d1c7533f6e730ea65f171b
MD5 dfe885b2aae1c1eeec7ca0e0d8f9dc0c
BLAKE2b-256 3f6bd5eb0c23ea127f54dacec04cfa000207be15eda4a957693d2abedd4d5f1c

See more details on using hashes here.

Provenance

The following attestation bundles were made for smartem_workspace-0.5.0-py3-none-any.whl:

Publisher: release-smartem-workspace.yml on DiamondLightSource/smartem-devtools

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page