kaitranntt 45f80fd807 fix: properly organize shared test resources
- Move fixtures/ and unit/ to shared/ directory where they belong
- These test resources are used by both npm and native installations
- Update package.json test scripts to use new paths
- Fix relative import path in helpers.test.js
- All 46 npm-based tests now passing (7 unit + 5 integration + 34 npm)

Final test structure:
- native/     - Native installation tests only
- npm/        - npm package tests only
- shared/     - Shared utilities, fixtures, and unit tests
- integration/- Cross-installation integration tests
- edge-cases.sh/.ps1 - Master orchestrators
2025-11-05 11:16:16 -05:00
2025-11-04 23:11:47 -05:00
2025-11-04 23:11:47 -05:00
2025-11-04 23:11:47 -05:00

CCS - Claude Code Switch

CCS Logo

One command, zero downtime, right model for each task

Switch between Claude Sonnet 4.5 and GLM 4.6 instantly. Stop hitting rate limits. Start optimizing costs.

License Platform npm PoweredBy

Languages: English | Tiếng Việt


🚀 Quick Start

🔑 Prerequisites

Before installing CCS, make sure you're logged into Claude CLI with your subscription account:

claude /login

Primary Installation Methods

macOS / Linux / Windows

npm install -g @kaitranntt/ccs

Compatible with npm, yarn, pnpm, and bun package managers.

Option 2: Direct Install (Traditional)

macOS / Linux

curl -fsSL ccs.kaitran.ca/install | bash

Windows PowerShell

irm ccs.kaitran.ca/install | iex

Your First Switch

# Use Claude subscription (default)
ccs "Review this architecture design"

# Switch to GLM for cost-optimized tasks
ccs glm "Create a simple REST API"

# Use GLM for all subsequent commands until switched back
ccs glm
ccs "Debug this issue"
ccs "Write unit tests"

Package Manager Options

All major package managers are supported:

# npm (default)
npm install -g @kaitranntt/ccs

# yarn
yarn global add @kaitranntt/ccs

# pnpm (70% less disk space)
pnpm add -g @kaitranntt/ccs

# bun (30x faster)
bun add -g @kaitranntt/ccs

Configuration (Auto-created)

CCS automatically creates configuration during installation (via npm postinstall script).

~/.ccs/config.json:

{
  "profiles": {
    "glm": "~/.ccs/glm.settings.json",
    "default": "~/.claude/settings.json"
  }
}

Custom Claude CLI Path

If Claude CLI is installed in a non-standard location (D drive, custom directory), set CCS_CLAUDE_PATH:

export CCS_CLAUDE_PATH="/path/to/claude"              # Unix
$env:CCS_CLAUDE_PATH = "D:\Tools\Claude\claude.exe"   # Windows

See Troubleshooting Guide for detailed setup instructions.


The Daily Developer Pain Point

You have both Claude subscription and GLM Coding Plan. Two scenarios happen every day:

  1. Rate Limits Hit: Claude stops mid-project → you manually edit ~/.claude/settings.json
  2. Cost Waste: Simple tasks use expensive Claude → GLM would work fine

Manual switching breaks your flow. CCS fixes it instantly.

Why CCS Instead of Manual Switching?

Feature Benefit Emotional Value
Instant Switching One command, no file editing Confidence, control
Zero Downtime Never interrupt your workflow Reliability, consistency
Smart Delegation Right model for each task automatically Simplicity, ease
Cost Control Use expensive models only when needed Efficiency, savings
Cross-Platform Works on macOS, Linux, Windows Flexibility, portability
Reliable Pure bash/PowerShell, zero dependencies Trust, peace of mind

The Solution:

ccs           # Use Claude subscription (default)
ccs glm       # Switch to GLM fallback
# Hit rate limit? Switch instantly:
ccs glm       # Continue working with GLM

One command. Zero downtime. No file editing. Right model, right task.


🏗️ Architecture Overview

graph LR
    subgraph "User Command"
        CMD[ccs glm]
    end

    subgraph "CCS Processing"
        CONFIG[Read ~/.ccs/config.json]
        LOOKUP[Lookup profile → settings file]
        VALIDATE[Validate file exists]
    end

    subgraph "Claude CLI"
        EXEC[claude --settings file_path]
    end

    subgraph "API Response"
        API[Claude Sub or GLM API]
    end

    CMD --> CONFIG
    CONFIG --> LOOKUP
    LOOKUP --> VALIDATE
    VALIDATE --> EXEC
    EXEC --> API

Features

Instant Profile Switching

  • One Command: ccs glm to switch to GLM, ccs to use Claude subscription - no config file editing
  • Smart Detection: Automatically uses right model for each task
  • Persistent: Switch stays active until changed again

Zero Workflow Interruption

  • No Downtime: Switching happens instantly between commands
  • Context Preservation: Your workflow remains uninterrupted
  • Seamless Integration: Works exactly like native Claude CLI

Task Delegation

🚧 Work in Progress: This feature is experimental and not fully tested. Use with caution.

CCS includes intelligent task delegation via the /ccs meta-command:

Install CCS commands:

ccs --install    # Install /ccs command to Claude CLI

Use task delegation:

# After running ccs --install, you can use:
/ccs glm /plan "add user authentication"
/ccs glm /code "implement auth endpoints"
/ccs glm /ask "explain this error"

Remove when not needed:

ccs --uninstall  # Remove /ccs command from Claude CLI

Benefits:

  • Save tokens by delegating simple tasks to cheaper models
  • Use right model for each task automatically
  • Seamless integration with existing workflows
  • Clean installation and removal when needed

💻 Usage Examples

ccs              # Use Claude subscription (default)
ccs glm          # Use GLM fallback
ccs --version    # Show CCS version and install location
ccs --install    # Install CCS commands and skills to ~/.claude/
ccs --uninstall  # Remove CCS commands and skills from ~/.claude/

🗑️ Uninstall

macOS / Linux:

curl -fsSL ccs.kaitran.ca/uninstall | bash

Windows PowerShell:

irm ccs.kaitran.ca/uninstall | iex

🎯 Philosophy

  • YAGNI: No features "just in case"
  • KISS: Simple bash, no complexity
  • DRY: One source of truth (config)

📖 Documentation

Complete documentation in docs/:


🤝 Contributing

We welcome contributions! Please see our Contributing Guide for details.


📄 License

CCS is licensed under the MIT License.


Made with ❤️ for developers who hit rate limits too often

Star this repo | 🐛 Report issues | 📖 Read docs

S
Description
Switch between Claude accounts, Gemini, Copilot, OpenRouter (300+ models) via CLIProxyAPI OAuth proxy. Visual dashboard, remote proxy support, WebSearch fallback. Zero-config to production-ready.
Readme MIT
33 MiB
Languages
TypeScript 81.4%
HTML 8.1%
JavaScript 7.1%
Swift 1.7%
Shell 1%
Other 0.6%