Rename project from SmartTools to CmdForge

Major rename operation:
- Rename Python package: smarttools -> cmdforge
- Update CLI entry point: smarttools -> cmdforge
- Update all imports and module references
- Update pyproject.toml with new name, URLs, entry point
- Update all HTML templates with new branding
- Update documentation (CLAUDE.md, README.md, docs/*, wiki/*)
- Update environment variables:
  - SMARTTOOLS_ENV -> CMDFORGE_ENV
  - SMARTTOOLS_REGISTRY_DB -> CMDFORGE_REGISTRY_DB
  - SMARTTOOLS_TOKEN -> CMDFORGE_TOKEN
  - SMARTTOOLS_REGISTRY_* -> CMDFORGE_REGISTRY_*
- Update Dockerfile and docker-compose.yml
- Update tests to use new package name
- Update scripts and examples
- Update package.json and tailwind.config.js

All 158 unit tests pass. The CLI is working correctly with the
new cmdforge command.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <[email protected]>
This commit is contained in:
rob
2026-01-02 22:15:55 -04:00
co-authored by Claude Opus 4.5
parent 2939dd806b
commit 497fe87fc5
113 changed files with 822 additions and 822 deletions
+8 -8
View File
@@ -7,7 +7,7 @@ from unittest.mock import patch
import pytest
import yaml
from smarttools.tool import (
from cmdforge.tool import (
Tool, ToolArgument, PromptStep, CodeStep,
validate_tool_name, load_tool, save_tool, delete_tool,
list_tools, tool_exists, create_wrapper_script,
@@ -390,8 +390,8 @@ class TestToolPersistence:
@pytest.fixture
def temp_tools_dir(self, tmp_path):
"""Create a temporary tools directory."""
with patch('smarttools.tool.TOOLS_DIR', tmp_path / ".smarttools"):
with patch('smarttools.tool.BIN_DIR', tmp_path / ".local" / "bin"):
with patch('cmdforge.tool.TOOLS_DIR', tmp_path / ".cmdforge"):
with patch('cmdforge.tool.BIN_DIR', tmp_path / ".local" / "bin"):
yield tmp_path
def test_save_and_load_tool(self, temp_tools_dir):
@@ -457,14 +457,14 @@ class TestToolPersistence:
def test_create_wrapper_script(self, temp_tools_dir):
save_tool(Tool(name="wrapper-test"))
from smarttools.tool import get_bin_dir
from cmdforge.tool import get_bin_dir
wrapper_path = get_bin_dir() / "wrapper-test"
assert wrapper_path.exists()
content = wrapper_path.read_text()
assert "#!/bin/bash" in content
assert "wrapper-test" in content
assert "smarttools.runner" in content
assert "cmdforge.runner" in content
class TestLegacyFormat:
@@ -473,9 +473,9 @@ class TestLegacyFormat:
@pytest.fixture
def temp_tools_dir(self, tmp_path):
"""Create a temporary tools directory."""
with patch('smarttools.tool.TOOLS_DIR', tmp_path / ".smarttools"):
with patch('smarttools.tool.BIN_DIR', tmp_path / ".local" / "bin"):
yield tmp_path / ".smarttools"
with patch('cmdforge.tool.TOOLS_DIR', tmp_path / ".cmdforge"):
with patch('cmdforge.tool.BIN_DIR', tmp_path / ".local" / "bin"):
yield tmp_path / ".cmdforge"
def test_load_legacy_format(self, temp_tools_dir):
"""Test loading a tool in the old format."""