wsb
Multi-tool CLI suite for file operations, version management, and development workflow automation. All tools accessible through a single wsb binary.
Install
Or build from source:
Core Tools
| Command | Description |
|---|---|
wsb refactor |
Recursive string replacement in files and directories |
wsb scrap |
Local trash can with .scrap folder |
wsb unscrap |
Restore files from .scrap folder |
wsb ldiff |
Line difference visualization for pattern analysis |
wsb status, wsb stage, wsb commit, etc. |
Git operations over the current repo or fleet root |
wsb update |
Update version file and render all templates |
wsb template |
Tera template management (add, list, show, render, delete) |
wsb wstemplate |
Cross-project version stamping with .wstemplate files |
wsb version |
Version management (show, major, tag, info) |
wsb code |
AST-based code analysis and transformation |
wsb test |
Intelligent test runner based on project type |
wsb status |
Project status with feature metrics and progress |
wsb feature |
Feature management with state machine workflow |
wsb task |
Feature-centric task management |
wsb directive |
Project directive and rule management |
wsb note |
Note management for any entity |
wsb serve |
Web server for Claude AI integration |
Quick Start
# Recursive string replacement
# Safe file disposal and recovery
# Git operations over the current repo or fleet root
# Cross-project version stamping
# Line difference visualization
|
# Project management
Version Management
wsb uses a three-part versioning scheme: {major}.{minor}.{patch}
- Major: Set via
wsb version major(stored in project database) - Minor: Total commits in the repository
- Patch: Total line changes (additions + deletions)
Version can be stamped into project files (Cargo.toml, package.json, pyproject.toml, etc.) via wsb update.
Cross-Project Version Stamping
.wstemplate files are Tera templates that render to the file with the suffix stripped (e.g., Cargo.toml.wstemplate renders to Cargo.toml). Templates can reference any sibling project's version:
[]
= "my-app"
= "{{ project.version }}"
[]
= { = "../my-lib", = "{{ projects.my_lib.version }}" }
Templates see more than the version. Each project — every submodule included — also exposes its newest published tag, HEAD commit, branch, worktree state, and path within the workspace:
[]
# Resolved from a local checkout: the version being built is the right one
= { = "../my-lib", = "{{ projects.my_lib.version }}" }
# Resolved from a registry by someone outside the workspace: must name a release
# that exists, and `version` is bumped on commit so it is always one step ahead
= "{{ projects.my_dep.latest_version }}"
Run wsb wstemplate vars to list every variable with its current value. A field that does not apply is an error naming the reason, never an empty string — a project with no tags fails the render instead of stamping "".
Cross-project references are resolved dynamically by scanning for .wsb/state.json files — no explicit dependency declarations needed.
Documentation
License
MIT