Renamed from Boilerplate to CleverClaude
This commit is contained in:
@@ -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
@@ -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
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Boilerplate
|
# CleverClaude
|
||||||
|
|
||||||
[](https://git.cleverthis.com/cleverthis/base/base-python/actions)
|
[](https://git.cleverthis.com/cleverthis/base/base-python/actions)
|
||||||
[](https://www.python.org/downloads/)
|
[](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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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!
|
||||||
@@ -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/)
|
||||||
|
|||||||
@@ -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>!"
|
||||||
|
|
||||||
|
|||||||
@@ -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
@@ -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
@@ -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,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 }}
|
||||||
@@ -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:
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
@@ -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
@@ -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
@@ -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
@@ -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
|
||||||
|
|||||||
@@ -1,6 +0,0 @@
|
|||||||
"""Entry point for python -m boilerplate."""
|
|
||||||
|
|
||||||
from boilerplate.cli import main
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
main()
|
|
||||||
@@ -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
|
||||||
|
|
||||||
Reference in New Issue
Block a user