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:
@@ -4,7 +4,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
|
||||
|
||||
## Project Overview
|
||||
|
||||
SmartTools is a lightweight personal tool builder for AI-powered CLI commands. It lets users create custom terminal commands that call AI providers, chain prompts with Python code steps, and use them like any Unix pipe command.
|
||||
CmdForge is a lightweight personal tool builder for AI-powered CLI commands. It lets users create custom terminal commands that call AI providers, chain prompts with Python code steps, and use them like any Unix pipe command.
|
||||
|
||||
## Development Commands
|
||||
|
||||
@@ -19,29 +19,29 @@ pytest
|
||||
pytest tests/test.py::test_name
|
||||
|
||||
# Run the CLI
|
||||
python -m smarttools.cli
|
||||
python -m cmdforge.cli
|
||||
|
||||
# Launch the UI
|
||||
smarttools ui
|
||||
cmdforge ui
|
||||
```
|
||||
|
||||
## Architecture
|
||||
|
||||
### Core Modules (`src/smarttools/`)
|
||||
### Core Modules (`src/cmdforge/`)
|
||||
|
||||
- **cli.py**: Entry point (`smarttools` command). Routes subcommands: list, create, edit, delete, test, run, ui, refresh
|
||||
- **cli.py**: Entry point (`cmdforge` command). Routes subcommands: list, create, edit, delete, test, run, ui, refresh
|
||||
- **tool.py**: Tool definition dataclasses (`Tool`, `ToolArgument`, `PromptStep`, `CodeStep`), YAML config loading/saving, wrapper script generation
|
||||
- **runner.py**: Execution engine. Runs tool steps sequentially, handles variable substitution (`{input}`, `{varname}`), executes Python code steps via `exec()`
|
||||
- **providers.py**: Provider abstraction. Calls AI CLI tools via subprocess, reads provider configs from `~/.smarttools/providers.yaml`
|
||||
- **providers.py**: Provider abstraction. Calls AI CLI tools via subprocess, reads provider configs from `~/.cmdforge/providers.yaml`
|
||||
- **ui.py**: UI dispatcher - selects between urwid and snack implementations
|
||||
- **ui_urwid.py**: Full TUI implementation using urwid library
|
||||
- **ui_snack.py**: Fallback TUI using python-newt/snack
|
||||
|
||||
### Key Paths
|
||||
|
||||
- **Tools storage**: `~/.smarttools/<toolname>/config.yaml`
|
||||
- **Tools storage**: `~/.cmdforge/<toolname>/config.yaml`
|
||||
- **Wrapper scripts**: `~/.local/bin/<toolname>` (auto-generated bash scripts)
|
||||
- **Provider config**: `~/.smarttools/providers.yaml`
|
||||
- **Provider config**: `~/.cmdforge/providers.yaml`
|
||||
|
||||
### Tool Structure
|
||||
|
||||
@@ -67,7 +67,7 @@ Variable substitution is simple string replacement in `runner.py:substitute_vari
|
||||
|
||||
## Provider System
|
||||
|
||||
Providers are CLI tools that accept prompts via stdin and output to stdout. Defined in `~/.smarttools/providers.yaml`:
|
||||
Providers are CLI tools that accept prompts via stdin and output to stdout. Defined in `~/.cmdforge/providers.yaml`:
|
||||
|
||||
```yaml
|
||||
providers:
|
||||
@@ -81,9 +81,9 @@ The `mock` provider is built-in for testing without API calls.
|
||||
|
||||
## Web UI & Registry
|
||||
|
||||
SmartTools includes a web interface and tool registry:
|
||||
CmdForge includes a web interface and tool registry:
|
||||
|
||||
### Web Modules (`src/smarttools/web/`)
|
||||
### Web Modules (`src/cmdforge/web/`)
|
||||
|
||||
- **app.py**: Flask app factory, registers blueprints
|
||||
- **routes.py**: Main web routes (docs, tutorials, tools, etc.)
|
||||
@@ -93,7 +93,7 @@ SmartTools includes a web interface and tool registry:
|
||||
- **filters.py**: Jinja2 filters (timeago, markdown, etc.)
|
||||
- **docs_content.py**: Documentation and tutorial content
|
||||
|
||||
### Registry Modules (`src/smarttools/registry/`)
|
||||
### Registry Modules (`src/cmdforge/registry/`)
|
||||
|
||||
- **app.py**: Registry API (tool publishing, search, downloads)
|
||||
- **db.py**: SQLite schema and queries
|
||||
@@ -109,8 +109,8 @@ SmartTools includes a web interface and tool registry:
|
||||
|
||||
```bash
|
||||
# Development
|
||||
python -m smarttools.web.app
|
||||
python -m cmdforge.web.app
|
||||
|
||||
# Production (example)
|
||||
SMARTTOOLS_REGISTRY_DB=/path/to/db PORT=5050 python -m smarttools.web.app
|
||||
CMDFORGE_REGISTRY_DB=/path/to/db PORT=5050 python -m cmdforge.web.app
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user