Renamed from Boilerplate to CleverClaude

This commit is contained in:
Your Name
2025-08-10 00:20:59 +00:00
parent bae6665d94
commit 20d6c2549d
24 changed files with 219 additions and 194 deletions
+2 -2
View File
@@ -105,11 +105,11 @@ jobs:
- name: Build Docker image - name: Build Docker image
run: | run: |
docker build -t boilerplate:test . docker build -t cleverclaude:test .
- name: Test Docker image - name: Test Docker image
run: | run: |
docker run --rm boilerplate:test --version docker run --rm cleverclaude:test --version
helm: helm:
needs: [lint, typecheck, behave] needs: [lint, typecheck, behave]
+25
View File
@@ -148,3 +148,28 @@ uv.lock
progress.output progress.output
**/settings.local.json **/settings.local.json
# Claude Flow generated files
.claude/settings.local.json
.mcp.json
claude-flow.config.json
.swarm/
.hive-mind/
memory/claude-flow-data.json
memory/sessions/*
!memory/sessions/README.md
memory/agents/*
!memory/agents/README.md
coordination/memory_bank/*
coordination/subtasks/*
coordination/orchestration/*
*.db
*.db-journal
*.db-wal
*.sqlite
*.sqlite-journal
*.sqlite-wal
claude-flow
claude-flow.bat
claude-flow.ps1
hive-mind-prompt-*.txt
+18 -18
View File
@@ -1,4 +1,4 @@
# Boilerplate # CleverClaude
[![CI](https://git.cleverthis.com/cleverthis/base/base-python/badges/workflows/ci.yml/badge.svg)](https://git.cleverthis.com/cleverthis/base/base-python/actions) [![CI](https://git.cleverthis.com/cleverthis/base/base-python/badges/workflows/ci.yml/badge.svg)](https://git.cleverthis.com/cleverthis/base/base-python/actions)
[![Python 3.13+](https://img.shields.io/badge/python-3.13+-blue.svg)](https://www.python.org/downloads/) [![Python 3.13+](https://img.shields.io/badge/python-3.13+-blue.svg)](https://www.python.org/downloads/)
@@ -216,7 +216,7 @@ claude
# Then in Claude Code: # Then in Claude Code:
%%tool ruff ruff_check path="src/" %%tool ruff ruff_check path="src/"
%%tool tests run_tests framework="behave" command="nox -s behave" %%tool tests run_tests framework="behave" command="nox -s behave"
%%tool forgejo create_pull_request repo="boilerplate" title="feat: new feature" %%tool forgejo create_pull_request repo="cleverclaude" title="feat: new feature"
``` ```
#### Infrastructure Management #### Infrastructure Management
@@ -760,7 +760,7 @@ This project uses **Behavior-Driven Development (BDD)** with comprehensive fuzzi
# features/cli.feature # features/cli.feature
Feature: Command-line greeting interface Feature: Command-line greeting interface
Scenario: Default greeting Scenario: Default greeting
When I run "python -m boilerplate" When I run "python -m cleverclaude"
Then the exit code should be 0 Then the exit code should be 0
And the output should contain "Hello, World!" And the output should contain "Hello, World!"
@@ -782,20 +782,20 @@ Feature: Command-line greeting interface
```bash ```bash
# Build development image # Build development image
docker build -t boilerplate:dev . docker build -t cleverclaude:dev .
# Run interactively # Run interactively
docker run --rm -it boilerplate:dev bash docker run --rm -it cleverclaude:dev bash
# Run CLI # Run CLI
docker run --rm boilerplate:dev --name "Docker" --count 3 docker run --rm cleverclaude:dev --name "Docker" --count 3
``` ```
### Production ### Production
```bash ```bash
# Build optimized production image # Build optimized production image
docker build -t boilerplate:latest . docker build -t cleverclaude:latest .
# Run with resource limits # Run with resource limits
docker run --rm \ docker run --rm \
@@ -803,12 +803,12 @@ docker run --rm \
--cpus=0.5 \ --cpus=0.5 \
--read-only \ --read-only \
--user=1000 \ --user=1000 \
boilerplate:latest --help cleverclaude:latest --help
# Multi-platform build # Multi-platform build
docker buildx build \ docker buildx build \
--platform linux/amd64,linux/arm64 \ --platform linux/amd64,linux/arm64 \
-t ghcr.io/cleverthis/boilerplate:latest \ -t ghcr.io/cleverthis/cleverclaude:latest \
--push . --push .
``` ```
@@ -824,10 +824,10 @@ docker buildx build \
```bash ```bash
# Deploy with default configuration # Deploy with default configuration
helm install boilerplate ./k8s helm install cleverclaude ./k8s
# Deploy with custom values # Deploy with custom values
helm install boilerplate ./k8s \ helm install cleverclaude ./k8s \
--set image.tag=v0.2.0 \ --set image.tag=v0.2.0 \
--set replicaCount=3 \ --set replicaCount=3 \
--set resources.limits.memory=512Mi --set resources.limits.memory=512Mi
@@ -869,7 +869,7 @@ ingress:
```bash ```bash
# Deploy to production # Deploy to production
helm upgrade --install boilerplate ./k8s \ helm upgrade --install cleverclaude ./k8s \
-f values-production.yaml \ -f values-production.yaml \
--namespace production \ --namespace production \
--create-namespace \ --create-namespace \
@@ -1009,8 +1009,8 @@ mike set-default latest # Set default version
## 📁 Project Structure ## 📁 Project Structure
``` ```
boilerplate/ cleverclaude/
├── src/boilerplate/ # 📦 Source code ├── src/cleverclaude/ # 📦 Source code
│ ├── __init__.py # Package initialization │ ├── __init__.py # Package initialization
│ ├── __main__.py # Entry point for python -m │ ├── __main__.py # Entry point for python -m
│ └── cli.py # Command-line interface │ └── cli.py # Command-line interface
@@ -1091,7 +1091,7 @@ pyright # Type checking (5x faster than mypy)
```gherkin ```gherkin
# BDD scenarios serve as living documentation # BDD scenarios serve as living documentation
Scenario: Custom name greeting Scenario: Custom name greeting
When I run "python -m boilerplate --name Alice" When I run "python -m cleverclaude --name Alice"
Then the exit code should be 0 Then the exit code should be 0
And the output should contain "Hello, Alice!" And the output should contain "Hello, Alice!"
@@ -1173,7 +1173,7 @@ echo $GRAFANA_API_TOKEN
docker builder prune docker builder prune
# Build with no cache # Build with no cache
docker build --no-cache -t boilerplate:latest . docker build --no-cache -t cleverclaude:latest .
# Check multi-platform support # Check multi-platform support
docker buildx ls docker buildx ls
@@ -1251,7 +1251,7 @@ nox -s behave -- --processes 4
### Complete Documentation ### Complete Documentation
Visit **https://cleverthis.github.io/boilerplate** for: Visit **https://cleverthis.github.io/cleverclaude** for:
- 📋 **Getting Started Guide** - 📋 **Getting Started Guide**
- 🐳 **Development Container Setup** - 🐳 **Development Container Setup**
@@ -1299,7 +1299,7 @@ git checkout -b feature/awesome-feature
claude # Start Claude Code with MCP servers for AI-powered development claude # Start Claude Code with MCP servers for AI-powered development
# 5. Implement feature # 5. Implement feature
# Edit src/boilerplate/cli.py # Edit src/cleverclaude/cli.py
# 6. Run tests # 6. Run tests
nox -s behave nox -s behave
+4 -4
View File
@@ -2,7 +2,7 @@
## CLI Module ## CLI Module
### `boilerplate.cli` ### `cleverclaude.cli`
The main command-line interface module. The main command-line interface module.
@@ -18,7 +18,7 @@ The main entry point for the CLI application.
**Example:** **Example:**
```python ```python
from boilerplate.cli import main from cleverclaude.cli import main
from click.testing import CliRunner from click.testing import CliRunner
runner = CliRunner() runner = CliRunner()
@@ -30,11 +30,11 @@ print(result.output)
## Package Information ## Package Information
### `boilerplate.__version__` ### `cleverclaude.__version__`
The current version of the package. The current version of the package.
```python ```python
from boilerplate import __version__ from cleverclaude import __version__
print(__version__) # "0.1.0" print(__version__) # "0.1.0"
``` ```
+3 -3
View File
@@ -8,7 +8,7 @@ All features are documented as Gherkin scenarios that serve as both tests and do
```gherkin ```gherkin
Scenario: Default greeting Scenario: Default greeting
When I run "python -m boilerplate" When I run "python -m cleverclaude"
Then the exit code should be 0 Then the exit code should be 0
And the output should contain "Hello, World!" And the output should contain "Hello, World!"
``` ```
@@ -17,7 +17,7 @@ Scenario: Default greeting
```gherkin ```gherkin
Scenario: Custom name greeting Scenario: Custom name greeting
When I run "python -m boilerplate --name Alice" When I run "python -m cleverclaude --name Alice"
Then the exit code should be 0 Then the exit code should be 0
And the output should contain "Hello, Alice!" And the output should contain "Hello, Alice!"
``` ```
@@ -26,7 +26,7 @@ Scenario: Custom name greeting
```gherkin ```gherkin
Scenario: Multiple greetings Scenario: Multiple greetings
When I run "python -m boilerplate --count 3" When I run "python -m cleverclaude --count 3"
Then the exit code should be 0 Then the exit code should be 0
And the output should contain "Hello, World!" 3 times And the output should contain "Hello, World!" 3 times
``` ```
+14 -14
View File
@@ -6,20 +6,20 @@
```bash ```bash
# Build with default tag # Build with default tag
docker build -t boilerplate:latest . docker build -t cleverclaude:latest .
# Build with specific version # Build with specific version
docker build -t boilerplate:v0.1.0 . docker build -t cleverclaude:v0.1.0 .
``` ```
### Running the Container ### Running the Container
```bash ```bash
# Show help # Show help
docker run --rm boilerplate:latest docker run --rm cleverclaude:latest
# Run with custom arguments # Run with custom arguments
docker run --rm boilerplate:latest --name Docker --count 3 docker run --rm cleverclaude:latest --name Docker --count 3
``` ```
### Multi-Platform Builds ### Multi-Platform Builds
@@ -27,7 +27,7 @@ docker run --rm boilerplate:latest --name Docker --count 3
```bash ```bash
# Build for multiple platforms # Build for multiple platforms
docker buildx build --platform linux/amd64,linux/arm64 \ docker buildx build --platform linux/amd64,linux/arm64 \
-t ghcr.io/cleverthis/boilerplate:latest \ -t ghcr.io/cleverthis/cleverclaude:latest \
--push . --push .
``` ```
@@ -43,10 +43,10 @@ docker buildx build --platform linux/amd64,linux/arm64 \
```bash ```bash
# Install with default values # Install with default values
helm install boilerplate ./k8s helm install cleverclaude ./k8s
# Install with custom values # Install with custom values
helm install boilerplate ./k8s \ helm install cleverclaude ./k8s \
--set image.tag=v0.1.0 \ --set image.tag=v0.1.0 \
--set replicaCount=3 --set replicaCount=3
``` ```
@@ -91,7 +91,7 @@ ingress:
Deploy with custom values: Deploy with custom values:
```bash ```bash
helm upgrade --install boilerplate ./k8s \ helm upgrade --install cleverclaude ./k8s \
-f values-prod.yaml \ -f values-prod.yaml \
--namespace production \ --namespace production \
--create-namespace --create-namespace
@@ -104,26 +104,26 @@ helm upgrade --install boilerplate ./k8s \
kubectl get deployments -n production kubectl get deployments -n production
# Check pod status # Check pod status
kubectl get pods -n production -l app.kubernetes.io/name=boilerplate kubectl get pods -n production -l app.kubernetes.io/name=cleverclaude
# Check HPA status # Check HPA status
kubectl get hpa -n production kubectl get hpa -n production
# View logs # View logs
kubectl logs -n production -l app.kubernetes.io/name=boilerplate kubectl logs -n production -l app.kubernetes.io/name=cleverclaude
``` ```
### Rollback ### Rollback
```bash ```bash
# View release history # View release history
helm history boilerplate -n production helm history cleverclaude -n production
# Rollback to previous version # Rollback to previous version
helm rollback boilerplate -n production helm rollback cleverclaude -n production
# Rollback to specific revision # Rollback to specific revision
helm rollback boilerplate 3 -n production helm rollback cleverclaude 3 -n production
``` ```
## CI/CD Pipeline ## CI/CD Pipeline
@@ -155,7 +155,7 @@ deploy:
echo "$KUBECONFIG_DATA" | base64 -d > /tmp/kubeconfig echo "$KUBECONFIG_DATA" | base64 -d > /tmp/kubeconfig
export KUBECONFIG=/tmp/kubeconfig export KUBECONFIG=/tmp/kubeconfig
helm upgrade --install boilerplate ./k8s \ helm upgrade --install cleverclaude ./k8s \
--namespace production \ --namespace production \
--set image.tag=${{ github.sha }} \ --set image.tag=${{ github.sha }} \
--wait --wait
+85 -85
View File
@@ -35,14 +35,14 @@ git clone https://git.cleverthis.com/cleverthis/base/base-python
cd base-python cd base-python
# Build the development container # Build the development container
docker build -f .devcontainer/Dockerfile -t boilerplate-dev . docker build -f .devcontainer/Dockerfile -t cleverclaude-dev .
# Run the development container # Run the development container
docker run -it --rm \ docker run -it --rm \
-v $(pwd):/workspaces/boilerplate \ -v $(pwd):/workspaces/cleverclaude \
-w /workspaces/boilerplate \ -w /workspaces/cleverclaude \
--name boilerplate-dev \ --name cleverclaude-dev \
boilerplate-dev bash cleverclaude-dev bash
``` ```
### 2. Inside the Container ### 2. Inside the Container
@@ -55,7 +55,7 @@ python --version # Python 3.13.x
which python # /usr/local/bin/python which python # /usr/local/bin/python
# Virtual environment is auto-activated # Virtual environment is auto-activated
echo $VIRTUAL_ENV # /workspaces/boilerplate/.venv echo $VIRTUAL_ENV # /workspaces/cleverclaude/.venv
# Check tools are installed # Check tools are installed
ruff --version # Linting and formatting ruff --version # Linting and formatting
@@ -70,7 +70,7 @@ nox -s format # Format code
nox -s typecheck # Type checking nox -s typecheck # Type checking
# Test the CLI # Test the CLI
python -m boilerplate --name "DevContainer" --count 2 python -m cleverclaude --name "DevContainer" --count 2
``` ```
### 3. Available Shell Aliases ### 3. Available Shell Aliases
@@ -88,7 +88,7 @@ dev-all # nox (run all checks)
# Docker shortcuts # Docker shortcuts
d # docker d # docker
build-docker # docker build -t boilerplate:dev . build-docker # docker build -t cleverclaude:dev .
# Git shortcuts # Git shortcuts
gs # git status gs # git status
@@ -110,15 +110,15 @@ For ongoing development with persistent changes:
```bash ```bash
# Create a named container for persistence # Create a named container for persistence
docker run -it \ docker run -it \
-v $(pwd):/workspaces/boilerplate \ -v $(pwd):/workspaces/cleverclaude \
-v boilerplate-venv:/workspaces/boilerplate/.venv \ -v cleverclaude-venv:/workspaces/cleverclaude/.venv \
-v boilerplate-cache:/tmp/uv-cache \ -v cleverclaude-cache:/tmp/uv-cache \
-w /workspaces/boilerplate \ -w /workspaces/cleverclaude \
--name boilerplate-dev-persistent \ --name cleverclaude-dev-persistent \
boilerplate-dev bash cleverclaude-dev bash
# Later, restart the same container # Later, restart the same container
docker start -ai boilerplate-dev-persistent docker start -ai cleverclaude-dev-persistent
``` ```
## IDE Integration ## IDE Integration
@@ -129,14 +129,14 @@ Connect to your running container from Emacs:
```bash ```bash
# 1. Start container with SSH (add to Dockerfile if needed) # 1. Start container with SSH (add to Dockerfile if needed)
docker run -it --name boilerplate-dev \ docker run -it --name cleverclaude-dev \
-v $(pwd):/workspaces/boilerplate \ -v $(pwd):/workspaces/cleverclaude \
-p 2222:22 \ -p 2222:22 \
boilerplate-dev cleverclaude-dev
# 2. In Emacs, connect via TRAMP # 2. In Emacs, connect via TRAMP
# M-x find-file # M-x find-file
# /docker:boilerplate-dev:/workspaces/boilerplate/ # /docker:cleverclaude-dev:/workspaces/cleverclaude/
``` ```
**Emacs Configuration:** **Emacs Configuration:**
@@ -163,30 +163,30 @@ docker run -it --name boilerplate-dev \
```bash ```bash
# Run container with vim pre-installed # Run container with vim pre-installed
docker run -it --rm \ docker run -it --rm \
-v $(pwd):/workspaces/boilerplate \ -v $(pwd):/workspaces/cleverclaude \
-w /workspaces/boilerplate \ -w /workspaces/cleverclaude \
boilerplate-dev vim cleverclaude-dev vim
# Or use neovim if installed # Or use neovim if installed
docker run -it --rm \ docker run -it --rm \
-v $(pwd):/workspaces/boilerplate \ -v $(pwd):/workspaces/cleverclaude \
-w /workspaces/boilerplate \ -w /workspaces/cleverclaude \
boilerplate-dev nvim cleverclaude-dev nvim
``` ```
#### Option 2: Host Vim with Container Tools #### Option 2: Host Vim with Container Tools
```bash ```bash
# 1. Start container as daemon # 1. Start container as daemon
docker run -d --name boilerplate-tools \ docker run -d --name cleverclaude-tools \
-v $(pwd):/workspaces/boilerplate \ -v $(pwd):/workspaces/cleverclaude \
-w /workspaces/boilerplate \ -w /workspaces/cleverclaude \
boilerplate-dev tail -f /dev/null cleverclaude-dev tail -f /dev/null
# 2. Create wrapper scripts # 2. Create wrapper scripts
cat > vim-ruff << 'EOF' cat > vim-ruff << 'EOF'
#!/bin/bash #!/bin/bash
docker exec boilerplate-tools ruff "$@" docker exec cleverclaude-tools ruff "$@"
EOF EOF
chmod +x vim-ruff chmod +x vim-ruff
@@ -197,7 +197,7 @@ chmod +x vim-ruff
```vim ```vim
" .vimrc or init.vim " .vimrc or init.vim
" Python development setup " Python development setup
let g:python3_host_prog = 'docker exec boilerplate-tools python' let g:python3_host_prog = 'docker exec cleverclaude-tools python'
" Use container tools for linting " Use container tools for linting
let g:ale_linters = { let g:ale_linters = {
@@ -217,10 +217,10 @@ let g:ale_fixers = {
```bash ```bash
# 1. Start container # 1. Start container
docker run -it --name boilerplate-dev \ docker run -it --name cleverclaude-dev \
-v $(pwd):/workspaces/boilerplate \ -v $(pwd):/workspaces/cleverclaude \
-w /workspaces/boilerplate \ -w /workspaces/cleverclaude \
boilerplate-dev bash cleverclaude-dev bash
# 2. Open VS Code and connect to terminal # 2. Open VS Code and connect to terminal
# Terminal → New Terminal # Terminal → New Terminal
@@ -254,15 +254,15 @@ The `.devcontainer/devcontainer.json` is pre-configured with:
```bash ```bash
# 1. Start container as daemon # 1. Start container as daemon
docker run -d --name boilerplate-pycharm \ docker run -d --name cleverclaude-pycharm \
-v $(pwd):/workspaces/boilerplate \ -v $(pwd):/workspaces/cleverclaude \
-p 2222:22 \ -p 2222:22 \
boilerplate-dev cleverclaude-dev
# 2. Configure PyCharm remote interpreter # 2. Configure PyCharm remote interpreter
# File → Settings → Project → Python Interpreter # File → Settings → Project → Python Interpreter
# Add Interpreter → Docker → Existing container # Add Interpreter → Docker → Existing container
# Container: boilerplate-pycharm # Container: cleverclaude-pycharm
# Python path: /usr/local/bin/python # Python path: /usr/local/bin/python
``` ```
@@ -277,16 +277,16 @@ services:
context: . context: .
dockerfile: .devcontainer/Dockerfile dockerfile: .devcontainer/Dockerfile
volumes: volumes:
- .:/workspaces/boilerplate - .:/workspaces/cleverclaude
- boilerplate-venv:/workspaces/boilerplate/.venv - cleverclaude-venv:/workspaces/cleverclaude/.venv
working_dir: /workspaces/boilerplate working_dir: /workspaces/cleverclaude
command: tail -f /dev/null command: tail -f /dev/null
ports: ports:
- "8000:8000" - "8000:8000"
- "3000:3000" - "3000:3000"
volumes: volumes:
boilerplate-venv: cleverclaude-venv:
``` ```
```bash ```bash
@@ -314,7 +314,7 @@ docker-compose -f docker-compose.dev.yml up -d
python --version # Python 3.13.x python --version # Python 3.13.x
pip --version # uv-powered pip replacement pip --version # uv-powered pip replacement
which python # /usr/local/bin/python which python # /usr/local/bin/python
echo $PYTHONPATH # /workspaces/boilerplate/src echo $PYTHONPATH # /workspaces/cleverclaude/src
``` ```
### 🛠️ **Development Tools** ### 🛠️ **Development Tools**
@@ -352,12 +352,12 @@ Forward ports from container to host:
```bash ```bash
# Forward development server ports # Forward development server ports
docker run -it --rm \ docker run -it --rm \
-v $(pwd):/workspaces/boilerplate \ -v $(pwd):/workspaces/cleverclaude \
-w /workspaces/boilerplate \ -w /workspaces/cleverclaude \
-p 8000:8000 \ -p 8000:8000 \
-p 3000:3000 \ -p 3000:3000 \
-p 8080:8080 \ -p 8080:8080 \
boilerplate-dev bash cleverclaude-dev bash
# Now you can access: # Now you can access:
# http://localhost:8000 - Application server # http://localhost:8000 - Application server
@@ -372,12 +372,12 @@ For better performance, especially on macOS/Windows:
```bash ```bash
# Use named volumes for dependencies # Use named volumes for dependencies
docker run -it --rm \ docker run -it --rm \
-v $(pwd):/workspaces/boilerplate \ -v $(pwd):/workspaces/cleverclaude \
-v boilerplate-venv:/workspaces/boilerplate/.venv \ -v cleverclaude-venv:/workspaces/cleverclaude/.venv \
-v boilerplate-cache:/tmp/uv-cache \ -v cleverclaude-cache:/tmp/uv-cache \
-v boilerplate-node-modules:/workspaces/boilerplate/node_modules \ -v cleverclaude-node-modules:/workspaces/cleverclaude/node_modules \
-w /workspaces/boilerplate \ -w /workspaces/cleverclaude \
boilerplate-dev bash cleverclaude-dev bash
``` ```
### Custom Configuration ### Custom Configuration
@@ -387,18 +387,18 @@ Mount custom configuration files:
```bash ```bash
# Mount custom git config # Mount custom git config
docker run -it --rm \ docker run -it --rm \
-v $(pwd):/workspaces/boilerplate \ -v $(pwd):/workspaces/cleverclaude \
-v ~/.gitconfig:/home/vscode/.gitconfig:ro \ -v ~/.gitconfig:/home/vscode/.gitconfig:ro \
-v ~/.ssh:/home/vscode/.ssh:ro \ -v ~/.ssh:/home/vscode/.ssh:ro \
-w /workspaces/boilerplate \ -w /workspaces/cleverclaude \
boilerplate-dev bash cleverclaude-dev bash
# Mount custom shell config # Mount custom shell config
docker run -it --rm \ docker run -it --rm \
-v $(pwd):/workspaces/boilerplate \ -v $(pwd):/workspaces/cleverclaude \
-v ~/.zshrc:/home/vscode/.zshrc.local:ro \ -v ~/.zshrc:/home/vscode/.zshrc.local:ro \
-w /workspaces/boilerplate \ -w /workspaces/cleverclaude \
boilerplate-dev bash cleverclaude-dev bash
``` ```
### Development Workflow ### Development Workflow
@@ -406,17 +406,17 @@ docker run -it --rm \
```bash ```bash
# 1. Start development container # 1. Start development container
docker run -it --name dev-session \ docker run -it --name dev-session \
-v $(pwd):/workspaces/boilerplate \ -v $(pwd):/workspaces/cleverclaude \
-v boilerplate-venv:/workspaces/boilerplate/.venv \ -v cleverclaude-venv:/workspaces/cleverclaude/.venv \
-p 3000:3000 \ -p 3000:3000 \
-w /workspaces/boilerplate \ -w /workspaces/cleverclaude \
boilerplate-dev bash cleverclaude-dev bash
# 2. Inside container - start documentation server # 2. Inside container - start documentation server
nox -s serve_docs & # Runs in background nox -s serve_docs & # Runs in background
# 3. Make changes to code # 3. Make changes to code
vim src/boilerplate/cli.py vim src/cleverclaude/cli.py
# 4. Run tests # 4. Run tests
dev-test # Quick BDD tests dev-test # Quick BDD tests
@@ -449,7 +449,7 @@ For cloud-based development without local Docker:
# Inside Codespace, same commands work: # Inside Codespace, same commands work:
nox -s behave # Run tests nox -s behave # Run tests
dev-all # Run all checks dev-all # Run all checks
python -m boilerplate --help python -m cleverclaude --help
``` ```
**Codespace Features:** **Codespace Features:**
@@ -472,7 +472,7 @@ docker ps
docker system prune -f docker system prune -f
# Rebuild container # Rebuild container
docker build -f .devcontainer/Dockerfile -t boilerplate-dev . --no-cache docker build -f .devcontainer/Dockerfile -t cleverclaude-dev . --no-cache
``` ```
### Permission Issues ### Permission Issues
@@ -481,9 +481,9 @@ docker build -f .devcontainer/Dockerfile -t boilerplate-dev . --no-cache
# Run as your user ID # Run as your user ID
docker run -it --rm \ docker run -it --rm \
-u $(id -u):$(id -g) \ -u $(id -u):$(id -g) \
-v $(pwd):/workspaces/boilerplate \ -v $(pwd):/workspaces/cleverclaude \
-w /workspaces/boilerplate \ -w /workspaces/cleverclaude \
boilerplate-dev bash cleverclaude-dev bash
# Or fix permissions after # Or fix permissions after
sudo chown -R $(id -u):$(id -g) . sudo chown -R $(id -u):$(id -g) .
@@ -493,16 +493,16 @@ sudo chown -R $(id -u):$(id -g) .
```bash ```bash
# Check if tools are installed # Check if tools are installed
docker run --rm boilerplate-dev which ruff pyright behave nox docker run --rm cleverclaude-dev which ruff pyright behave nox
# Check PATH # Check PATH
docker run --rm boilerplate-dev echo $PATH docker run --rm cleverclaude-dev echo $PATH
# Reinstall dependencies # Reinstall dependencies
docker run -it --rm \ docker run -it --rm \
-v $(pwd):/workspaces/boilerplate \ -v $(pwd):/workspaces/cleverclaude \
-w /workspaces/boilerplate \ -w /workspaces/cleverclaude \
boilerplate-dev bash -c "uv pip install -e .[dev]" cleverclaude-dev bash -c "uv pip install -e .[dev]"
``` ```
### Performance Issues ### Performance Issues
@@ -514,10 +514,10 @@ docker run -it --rm \
# Use volumes for better performance # Use volumes for better performance
docker run -it --rm \ docker run -it --rm \
-v $(pwd):/workspaces/boilerplate \ -v $(pwd):/workspaces/cleverclaude \
-v boilerplate-cache:/tmp/uv-cache \ -v cleverclaude-cache:/tmp/uv-cache \
-w /workspaces/boilerplate \ -w /workspaces/cleverclaude \
boilerplate-dev bash cleverclaude-dev bash
``` ```
## Best Practices ## Best Practices
@@ -525,10 +525,10 @@ docker run -it --rm \
### 🔄 **Container Lifecycle** ### 🔄 **Container Lifecycle**
```bash ```bash
# For short tasks - use --rm # For short tasks - use --rm
docker run --rm boilerplate-dev nox -s lint docker run --rm cleverclaude-dev nox -s lint
# For development sessions - use named containers # For development sessions - use named containers
docker run --name dev-session boilerplate-dev bash docker run --name dev-session cleverclaude-dev bash
docker start -ai dev-session # Resume later docker start -ai dev-session # Resume later
``` ```
@@ -541,7 +541,7 @@ docker volume ls
docker volume prune docker volume prune
# Backup important data # Backup important data
docker run --rm -v boilerplate-venv:/data -v $(pwd):/backup \ docker run --rm -v cleverclaude-venv:/data -v $(pwd):/backup \
alpine tar czf /backup/venv-backup.tar.gz -C /data . alpine tar czf /backup/venv-backup.tar.gz -C /data .
``` ```
@@ -549,20 +549,20 @@ docker run --rm -v boilerplate-venv:/data -v $(pwd):/backup \
```bash ```bash
# Don't store secrets in container images # Don't store secrets in container images
# Use environment variables or mounted secrets # Use environment variables or mounted secrets
docker run -e SECRET_KEY="$SECRET_KEY" boilerplate-dev docker run -e SECRET_KEY="$SECRET_KEY" cleverclaude-dev
# Use read-only mounts when possible # Use read-only mounts when possible
docker run -v $(pwd):/workspace:ro boilerplate-dev docker run -v $(pwd):/workspace:ro cleverclaude-dev
``` ```
### ⚡ **Performance** ### ⚡ **Performance**
```bash ```bash
# Use named volumes for dependencies # Use named volumes for dependencies
-v boilerplate-venv:/workspaces/boilerplate/.venv -v cleverclaude-venv:/workspaces/cleverclaude/.venv
# Enable BuildKit for faster builds # Enable BuildKit for faster builds
export DOCKER_BUILDKIT=1 export DOCKER_BUILDKIT=1
docker build -f .devcontainer/Dockerfile -t boilerplate-dev . docker build -f .devcontainer/Dockerfile -t cleverclaude-dev .
# Use multi-stage builds for smaller images (already configured) # Use multi-stage builds for smaller images (already configured)
``` ```
+13 -13
View File
@@ -1,8 +1,8 @@
# Boilerplate # CleverClaude
**Modern Python 3.13 micro-service starter with bleeding-edge tooling and 60-second cold clone to green CI.** **Modern Python 3.13 micro-service starter with bleeding-edge tooling and 60-second cold clone to green CI.**
This is a completely modernized Python starter project that replaces legacy setuptools-based workflows with cutting-edge tools and practices. Built for Python 3.11-3.13 with strict type safety, behavior-driven development, and cloud-native deployment. CleverClaude is a completely modernized Python starter project that replaces legacy setuptools-based workflows with cutting-edge tools and practices. Built for Python 3.11-3.13 with strict type safety, behavior-driven development, and cloud-native deployment.
## Features ## Features
@@ -50,8 +50,8 @@ Get started in 2-3 minutes with zero configuration:
```bash ```bash
# Clone and open in VS Code # Clone and open in VS Code
git clone https://git.cleverthis.com/cleverthis/base/base-python git clone https://git.cleverthis.com/cleverthis/cleverclaude
cd base-python && code . cd cleverclaude && code .
# Click "Reopen in Container" when prompted # Click "Reopen in Container" when prompted
# Wait 2-3 minutes for automatic setup # Wait 2-3 minutes for automatic setup
@@ -94,8 +94,8 @@ For developers who prefer local development:
pip install uv pip install uv
# Clone and setup # Clone and setup
git clone https://git.cleverthis.com/cleverthis/base/base-python git clone https://git.cleverthis.com/cleverthis/cleverclaude
cd base-python cd cleverclaude
# Create virtual environment and install dependencies # Create virtual environment and install dependencies
uv venv uv venv
@@ -187,8 +187,8 @@ dev-all # Alias for nox
### Directory Structure ### Directory Structure
``` ```
boilerplate/ cleverclaude/
├── src/boilerplate/ # 📦 Source code with type hints ├── src/cleverclaude/ # 📦 Source code with type hints
│ ├── __init__.py # Package initialization │ ├── __init__.py # Package initialization
│ ├── __main__.py # Entry point for python -m │ ├── __main__.py # Entry point for python -m
│ └── cli.py # Command-line interface │ └── cli.py # Command-line interface
@@ -245,7 +245,7 @@ requires = ["hatchling>=1.21.0"]
build-backend = "hatchling.build" build-backend = "hatchling.build"
[project] [project]
name = "boilerplate" name = "cleverclaude"
version = "0.1.0" version = "0.1.0"
dependencies = ["click>=8.1.7"] dependencies = ["click>=8.1.7"]
@@ -287,17 +287,17 @@ Tests are written as natural language specifications that serve as both document
```gherkin ```gherkin
Feature: Command-line greeting interface Feature: Command-line greeting interface
As a user of the boilerplate CLI As a user of the CleverClaude CLI
I want to be greeted properly I want to be greeted properly
So that I can verify the application works So that I can verify the application works
Scenario: Default greeting Scenario: Default greeting
When I run "python -m boilerplate" When I run "python -m cleverclaude"
Then the exit code should be 0 Then the exit code should be 0
And the output should contain "Hello, World!" And the output should contain "Hello, World!"
Scenario: Custom name greeting Scenario: Custom name greeting
When I run "python -m boilerplate --name Alice" When I run "python -m cleverclaude --name Alice"
Then the exit code should be 0 Then the exit code should be 0
And the output should contain "Hello, Alice!" And the output should contain "Hello, Alice!"
@@ -461,4 +461,4 @@ noxfile.py # Full Python flexibility
--- ---
**Ready to modernize your Python development?** Choose your preferred setup method above and experience the power of modern Python tooling! **Ready to modernize your Python development with CleverClaude?** Choose your preferred setup method above and experience the power of modern Python tooling!
+6 -6
View File
@@ -416,10 +416,10 @@ helm lint k8s/
**Solutions**: **Solutions**:
```bash ```bash
# 1. Check pod status # 1. Check pod status
kubectl get pods -l app.kubernetes.io/name=boilerplate kubectl get pods -l app.kubernetes.io/name=cleverclaude
# 2. Check pod logs # 2. Check pod logs
kubectl logs -l app.kubernetes.io/name=boilerplate kubectl logs -l app.kubernetes.io/name=cleverclaude
# 3. Describe failing resources # 3. Describe failing resources
kubectl describe pod <pod-name> kubectl describe pod <pod-name>
@@ -438,7 +438,7 @@ kubectl describe node
**Solutions**: **Solutions**:
```bash ```bash
# 1. Check image exists # 1. Check image exists
docker pull ghcr.io/cleverthis/boilerplate:latest docker pull ghcr.io/cleverthis/cleverclaude:latest
# 2. Check image pull secrets # 2. Check image pull secrets
kubectl get secrets kubectl get secrets
@@ -446,8 +446,8 @@ kubectl describe secret <image-pull-secret>
# 3. Use local image for testing # 3. Use local image for testing
# Build locally and use kind/minikube # Build locally and use kind/minikube
docker build -t boilerplate:local . docker build -t cleverclaude:local .
kind load docker-image boilerplate:local kind load docker-image cleverclaude:local
# 4. Update image pull policy # 4. Update image pull policy
# In values.yaml # In values.yaml
@@ -718,7 +718,7 @@ echo $PYTHONPATH
### Documentation Resources ### Documentation Resources
- **Main Documentation**: https://cleverthis.github.io/boilerplate - **Main Documentation**: https://cleverthis.github.io/cleverclaude
- **Tool Documentation**: - **Tool Documentation**:
- [uv docs](https://github.com/astral-sh/uv) - [uv docs](https://github.com/astral-sh/uv)
- [Ruff docs](https://docs.astral.sh/ruff/) - [Ruff docs](https://docs.astral.sh/ruff/)
+5 -5
View File
@@ -1,5 +1,5 @@
Feature: Command-line greeting interface Feature: Command-line greeting interface
As a user of the boilerplate CLI As a user of the CleverClaude CLI
I want to be greeted properly I want to be greeted properly
So that I can verify the application works So that I can verify the application works
@@ -7,22 +7,22 @@ Feature: Command-line greeting interface
Given the CLI is available Given the CLI is available
Scenario: Default greeting Scenario: Default greeting
When I run "python -m boilerplate" When I run "python -m cleverclaude"
Then the exit code should be 0 Then the exit code should be 0
And the output should contain "Hello, World!" And the output should contain "Hello, World!"
Scenario: Custom name greeting Scenario: Custom name greeting
When I run "python -m boilerplate --name Alice" When I run "python -m cleverclaude --name Alice"
Then the exit code should be 0 Then the exit code should be 0
And the output should contain "Hello, Alice!" And the output should contain "Hello, Alice!"
Scenario: Multiple greetings Scenario: Multiple greetings
When I run "python -m boilerplate --count 3" When I run "python -m cleverclaude --count 3"
Then the exit code should be 0 Then the exit code should be 0
And the output should contain "Hello, World!" 3 times And the output should contain "Hello, World!" 3 times
Scenario Outline: Greeting various names Scenario Outline: Greeting various names
When I run "python -m boilerplate --name <name>" When I run "python -m cleverclaude --name <name>"
Then the exit code should be 0 Then the exit code should be 0
And the output should contain "Hello, <name>!" And the output should contain "Hello, <name>!"
+3 -3
View File
@@ -5,7 +5,7 @@ from click.testing import CliRunner
from hypothesis import given as hypothesis_given from hypothesis import given as hypothesis_given
from hypothesis import strategies as st from hypothesis import strategies as st
from boilerplate.cli import main from cleverclaude.cli import main
@given("the CLI is available") @given("the CLI is available")
@@ -19,8 +19,8 @@ def step_cli_available(context):
def step_run_command(context, command): def step_run_command(context, command):
"""Execute a CLI command.""" """Execute a CLI command."""
parts = command.split() parts = command.split()
if len(parts) >= 3 and parts[0] == "python" and parts[1] == "-m" and parts[2] == "boilerplate": if len(parts) >= 3 and parts[0] == "python" and parts[1] == "-m" and parts[2] == "cleverclaude":
args = parts[3:] # Remove "python -m boilerplate" args = parts[3:] # Remove "python -m cleverclaude"
else: else:
args = parts args = parts
context.result = context.runner.invoke(main, args) context.result = context.runner.invoke(main, args)
+2 -2
View File
@@ -1,6 +1,6 @@
apiVersion: v2 apiVersion: v2
name: boilerplate name: cleverclaude
description: Helm chart for boilerplate Python 3.13 micro-service description: Helm chart for CleverClaude Python 3.13 micro-service
type: application type: application
version: 0.1.0 version: 0.1.0
appVersion: "0.1.0" appVersion: "0.1.0"
+10 -10
View File
@@ -1,14 +1,14 @@
{{/* {{/*
Expand the name of the chart. Expand the name of the chart.
*/}} */}}
{{- define "boilerplate.name" -}} {{- define "cleverclaude.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} {{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
{{- end }} {{- end }}
{{/* {{/*
Create a default fully qualified app name. Create a default fully qualified app name.
*/}} */}}
{{- define "boilerplate.fullname" -}} {{- define "cleverclaude.fullname" -}}
{{- if .Values.fullnameOverride }} {{- if .Values.fullnameOverride }}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
{{- else }} {{- else }}
@@ -24,16 +24,16 @@ Create a default fully qualified app name.
{{/* {{/*
Create chart name and version as used by the chart label. Create chart name and version as used by the chart label.
*/}} */}}
{{- define "boilerplate.chart" -}} {{- define "cleverclaude.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
{{- end }} {{- end }}
{{/* {{/*
Common labels Common labels
*/}} */}}
{{- define "boilerplate.labels" -}} {{- define "cleverclaude.labels" -}}
helm.sh/chart: {{ include "boilerplate.chart" . }} helm.sh/chart: {{ include "cleverclaude.chart" . }}
{{ include "boilerplate.selectorLabels" . }} {{ include "cleverclaude.selectorLabels" . }}
{{- if .Chart.AppVersion }} {{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }} {{- end }}
@@ -43,17 +43,17 @@ app.kubernetes.io/managed-by: {{ .Release.Service }}
{{/* {{/*
Selector labels Selector labels
*/}} */}}
{{- define "boilerplate.selectorLabels" -}} {{- define "cleverclaude.selectorLabels" -}}
app.kubernetes.io/name: {{ include "boilerplate.name" . }} app.kubernetes.io/name: {{ include "cleverclaude.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }} app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }} {{- end }}
{{/* {{/*
Create the name of the service account to use Create the name of the service account to use
*/}} */}}
{{- define "boilerplate.serviceAccountName" -}} {{- define "cleverclaude.serviceAccountName" -}}
{{- if .Values.serviceAccount.create }} {{- if .Values.serviceAccount.create }}
{{- default (include "boilerplate.fullname" .) .Values.serviceAccount.name }} {{- default (include "cleverclaude.fullname" .) .Values.serviceAccount.name }}
{{- else }} {{- else }}
{{- default "default" .Values.serviceAccount.name }} {{- default "default" .Values.serviceAccount.name }}
{{- end }} {{- end }}
+2 -2
View File
@@ -2,9 +2,9 @@
apiVersion: v1 apiVersion: v1
kind: ConfigMap kind: ConfigMap
metadata: metadata:
name: {{ include "boilerplate.fullname" . }} name: {{ include "cleverclaude.fullname" . }}
labels: labels:
{{- include "boilerplate.labels" . | nindent 4 }} {{- include "cleverclaude.labels" . | nindent 4 }}
data: data:
{{- toYaml .Values.configMap.data | nindent 2 }} {{- toYaml .Values.configMap.data | nindent 2 }}
{{- end }} {{- end }}
+5 -5
View File
@@ -1,16 +1,16 @@
apiVersion: apps/v1 apiVersion: apps/v1
kind: Deployment kind: Deployment
metadata: metadata:
name: {{ include "boilerplate.fullname" . }} name: {{ include "cleverclaude.fullname" . }}
labels: labels:
{{- include "boilerplate.labels" . | nindent 4 }} {{- include "cleverclaude.labels" . | nindent 4 }}
spec: spec:
{{- if not .Values.autoscaling.enabled }} {{- if not .Values.autoscaling.enabled }}
replicas: {{ .Values.replicaCount }} replicas: {{ .Values.replicaCount }}
{{- end }} {{- end }}
selector: selector:
matchLabels: matchLabels:
{{- include "boilerplate.selectorLabels" . | nindent 6 }} {{- include "cleverclaude.selectorLabels" . | nindent 6 }}
template: template:
metadata: metadata:
{{- with .Values.podAnnotations }} {{- with .Values.podAnnotations }}
@@ -18,13 +18,13 @@ spec:
{{- toYaml . | nindent 8 }} {{- toYaml . | nindent 8 }}
{{- end }} {{- end }}
labels: labels:
{{- include "boilerplate.selectorLabels" . | nindent 8 }} {{- include "cleverclaude.selectorLabels" . | nindent 8 }}
spec: spec:
{{- with .Values.imagePullSecrets }} {{- with .Values.imagePullSecrets }}
imagePullSecrets: imagePullSecrets:
{{- toYaml . | nindent 8 }} {{- toYaml . | nindent 8 }}
{{- end }} {{- end }}
serviceAccountName: {{ include "boilerplate.serviceAccountName" . }} serviceAccountName: {{ include "cleverclaude.serviceAccountName" . }}
securityContext: securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }} {{- toYaml .Values.podSecurityContext | nindent 8 }}
containers: containers:
+3 -3
View File
@@ -2,14 +2,14 @@
apiVersion: autoscaling/v2 apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler kind: HorizontalPodAutoscaler
metadata: metadata:
name: {{ include "boilerplate.fullname" . }} name: {{ include "cleverclaude.fullname" . }}
labels: labels:
{{- include "boilerplate.labels" . | nindent 4 }} {{- include "cleverclaude.labels" . | nindent 4 }}
spec: spec:
scaleTargetRef: scaleTargetRef:
apiVersion: apps/v1 apiVersion: apps/v1
kind: Deployment kind: Deployment
name: {{ include "boilerplate.fullname" . }} name: {{ include "cleverclaude.fullname" . }}
minReplicas: {{ .Values.autoscaling.minReplicas }} minReplicas: {{ .Values.autoscaling.minReplicas }}
maxReplicas: {{ .Values.autoscaling.maxReplicas }} maxReplicas: {{ .Values.autoscaling.maxReplicas }}
metrics: metrics:
+3 -3
View File
@@ -1,9 +1,9 @@
apiVersion: v1 apiVersion: v1
kind: Service kind: Service
metadata: metadata:
name: {{ include "boilerplate.fullname" . }} name: {{ include "cleverclaude.fullname" . }}
labels: labels:
{{- include "boilerplate.labels" . | nindent 4 }} {{- include "cleverclaude.labels" . | nindent 4 }}
spec: spec:
type: {{ .Values.service.type }} type: {{ .Values.service.type }}
ports: ports:
@@ -12,4 +12,4 @@ spec:
protocol: TCP protocol: TCP
name: http name: http
selector: selector:
{{- include "boilerplate.selectorLabels" . | nindent 4 }} {{- include "cleverclaude.selectorLabels" . | nindent 4 }}
+2 -2
View File
@@ -1,7 +1,7 @@
replicaCount: 2 replicaCount: 2
image: image:
repository: ghcr.io/cleverthis/boilerplate repository: ghcr.io/cleverthis/cleverclaude
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
tag: "" # Overrides the image tag whose default is the chart appVersion tag: "" # Overrides the image tag whose default is the chart appVersion
@@ -38,7 +38,7 @@ ingress:
className: "" className: ""
annotations: {} annotations: {}
hosts: hosts:
- host: boilerplate.local - host: cleverclaude.local
paths: paths:
- path: / - path: /
pathType: ImplementationSpecific pathType: ImplementationSpecific
+3 -3
View File
@@ -1,9 +1,9 @@
site_name: Boilerplate site_name: CleverClaude
site_description: Modern Python 3.13 micro-service starter site_description: Modern Python 3.13 micro-service starter
site_author: CleverThis site_author: CleverThis
site_url: https://cleverthis.github.io/boilerplate site_url: https://cleverthis.github.io/cleverclaude
repo_name: cleverthis/boilerplate repo_name: cleverthis/cleverclaude
repo_url: https://git.cleverthis.com/cleverthis/base/base-python repo_url: https://git.cleverthis.com/cleverthis/base/base-python
theme: theme:
+4 -4
View File
@@ -3,7 +3,7 @@ requires = ["hatchling>=1.21.0"]
build-backend = "hatchling.build" build-backend = "hatchling.build"
[project] [project]
name = "boilerplate" name = "cleverclaude"
version = "0.1.0" version = "0.1.0"
description = "A modern Python 3.13 micro-service starter" description = "A modern Python 3.13 micro-service starter"
readme = "README.md" readme = "README.md"
@@ -45,15 +45,15 @@ dev = [
[project.urls] [project.urls]
Homepage = "https://git.cleverthis.com/cleverthis/base/base-python" Homepage = "https://git.cleverthis.com/cleverthis/base/base-python"
Documentation = "https://cleverthis.github.io/boilerplate" Documentation = "https://cleverthis.github.io/cleverclaude"
Repository = "https://git.cleverthis.com/cleverthis/base/base-python" Repository = "https://git.cleverthis.com/cleverthis/base/base-python"
Issues = "https://git.cleverthis.com/cleverthis/base/base-python/issues" Issues = "https://git.cleverthis.com/cleverthis/base/base-python/issues"
[project.scripts] [project.scripts]
boilerplate = "boilerplate.cli:main" cleverclaude = "cleverclaude.cli:main"
[tool.hatch.build.targets.wheel] [tool.hatch.build.targets.wheel]
packages = ["src/boilerplate"] packages = ["src/cleverclaude"]
[tool.ruff] [tool.ruff]
line-length = 120 line-length = 120
-6
View File
@@ -1,6 +0,0 @@
"""Entry point for python -m boilerplate."""
from boilerplate.cli import main
if __name__ == "__main__":
main()
+6
View File
@@ -0,0 +1,6 @@
"""Entry point for python -m cleverclaude."""
from cleverclaude.cli import main
if __name__ == "__main__":
main()
@@ -1,4 +1,4 @@
"""Command-line interface for boilerplate.""" """Command-line interface for CleverClaude."""
import click import click