Skip to main content

CLI Reference

Complete reference for all SCM commands.

scm init

Initialize a new .scm directory.

scm init              # Create .scm in current directory
scm init --home # Create/ensure ~/.scm exists

scm run

Assemble context and run AI plugin.

scm run [flags] [prompt...]

Flags

FlagDescription
-p, --profile <name>Load predefined fragment set
-f, --fragments <names>Additional fragments to include (repeatable)
-t, --tags <tags>Include fragments with specific tags (repeatable)
--plugin <name>LLM plugin to use (default: claude-code)
--saved-prompt <name>Use saved prompt instead of inline
--dry-runShow what would be assembled without running
--suppress-warningsSuppress warnings
--printPrint assembled context to stdout
-v, -vv, -vvvVerbosity levels

Examples

scm run -p developer "implement error handling"
scm run -f python-tools#fragments/typing "add type hints"
scm run -f security#fragments/owasp -f python#fragments/errors "audit"
scm run -t security "check for vulnerabilities"
scm run --plugin gemini "use Gemini"
scm run --dry-run # Preview only

scm fragment

Manage fragments.

CommandFlagsArgumentsDescription
list--bundleList all fragments, optionally filtered by bundle
show--distilledbundle#fragments/nameShow fragment content
create<bundle> <name>Create new fragment with placeholder
deletebundle#fragments/nameDelete fragment from bundle
editbundle#fragments/nameEdit fragment in configured editor
distill--forcebundle#fragments/nameCreate token-efficient version
install--force, --blind<reference>Install bundle from remote

Examples

scm fragment list
scm fragment list --bundle python-tools
scm fragment show python-tools#fragments/typing
scm fragment show --distilled python-tools#fragments/typing
scm fragment create my-bundle coding-standards
scm fragment edit my-bundle#fragments/coding-standards
scm fragment distill my-bundle#fragments/coding-standards
scm fragment install scm-main/testing
scm fragment install --blind scm-main/security # Skip preview

scm prompt

Manage prompts.

CommandArgumentsDescription
listList all prompts
showbundle#prompts/nameShow prompt content
create<bundle> <name>Create new prompt
deletebundle#prompts/nameDelete prompt
editbundle#prompts/nameEdit prompt in editor
install<reference>Install from remote

scm profile

Manage profiles.

CommandFlagsArgumentsDescription
listList all profiles
show<name>Show profile details and exclusions
create--parent, -b, -d<name>Create new profile
modifySee below<name>Modify profile configuration
delete<name>Delete profile
edit<name>Edit profile in editor
install<reference>Install from remote

Create Flags

FlagDescription
--parentParent profiles to inherit from (repeatable)
-b, --bundleBundle references to include (repeatable)
-d, --descriptionProfile description

Modify Flags

FlagDescription
--add-parentAdd parent profile (repeatable)
--remove-parentRemove parent profile (repeatable)
--add-bundleAdd bundle reference (repeatable)
--remove-bundleRemove bundle reference (repeatable)
-d, --descriptionUpdate description
--exclude-fragmentAdd fragment to exclusion list (repeatable)
--include-fragmentRemove fragment from exclusion list (repeatable)
--exclude-promptAdd prompt to exclusion list (repeatable)
--include-promptRemove prompt from exclusion list (repeatable)
--exclude-mcpAdd MCP server to exclusion list (repeatable)
--include-mcpRemove MCP server from exclusion list (repeatable)

Examples

scm profile list
scm profile show developer
scm profile create my-profile -b python-tools -d "My dev profile"
scm profile create child --parent base --parent security -b extras
scm profile modify developer --exclude-fragment verbose-logging
scm profile modify developer --include-mcp slow-server
scm profile edit my-profile
scm profile install scm-main/python-developer

scm remote

Manage remote sources.

CommandArgumentsDescription
add<name> <url>Register remote source
remove<name>Remove registered remote
listList configured remotes
default[name]Get/set default remote
search<query>Search for bundles/profiles
browse<remote>Browse remote contents
discoverFind SCM repos on GitHub/GitLab
lockGenerate lockfile from installed items
update[name]Update remotes (all or specific)
syncSync dependencies

URL Formats

FormatExample
GitHub shorthandalice/scm
Full HTTPShttps://github.com/alice/scm
GitLabhttps://gitlab.com/corp/scm
SSH (converted to HTTPS)git@github.com:alice/scm.git

Examples

scm remote add myteam myorg/scm-team
scm remote add corp https://gitlab.com/corp/scm
scm remote list
scm remote default myteam
scm remote browse scm-main
scm remote search "python testing"
scm remote discover
scm remote sync

scm mcp

Manage MCP server configuration.

CommandFlagsArgumentsDescription
serveRun as MCP server over stdio (default)
listList configured MCP servers
add-c, -a, -b<name>Add MCP server
remove-b<name>Remove MCP server
show<name>Show MCP server details
auto-register--disable, --enableConfigure auto-registration

Add Flags

FlagDescription
-c, --commandCommand to run (required)
-a, --argsCommand arguments (repeatable)
-b, --backendBackend scope: unified, claude-code, gemini

Examples

scm mcp serve                    # Run as MCP server
scm mcp list
scm mcp add tree-sitter -c "npx" -a "tree-sitter-mcp" -a "--stdio"
scm mcp add my-server -c "/path/to/server" -b claude-code
scm mcp remove tree-sitter
scm mcp auto-register --disable

scm completion

Generate shell completion scripts.

scm completion [bash|zsh|fish|powershell]

Installation

Bash:

source <(scm completion bash)                    # Current session
scm completion bash > /etc/bash_completion.d/scm # Permanent (Linux)
scm completion bash > $(brew --prefix)/etc/bash_completion.d/scm # macOS

Zsh:

echo "autoload -U compinit; compinit" >> ~/.zshrc  # Enable if needed
scm completion zsh > "${fpath[1]}/_scm"

Fish:

scm completion fish > ~/.config/fish/completions/scm.fish

PowerShell:

scm completion powershell | Out-String | Invoke-Expression