An elegant interactive CLI for Anthropic's Claude API, built with TypeScript and Bun.js
Click to expand
- ๐ฏ Interactive chat sessions with Claude
- ๐ Smart code detection and file saving
- ๐จ Beautiful console interface with syntax highlighting
- ๐พ Auto-save and session replay
- ๐ Rate limiting and error handling
- ๐ฆ Template support for common use cases
- ๐งช Dry-run mode for testing
- ๐ Type-safe configuration with Zod
# Using bun
bun install -g claude-cli
# Using npm
npm install -g claude-cli
# Start a new chat session
claude-cli chat
# Use a specific template
claude-cli chat --template rust
# Replay a previous session
claude-cli replay <session-id>
# Show help
claude-cli --help
Available Templates
// @filename: templates.ts
const templates = {
rust: {
name: 'Rust Expert',
description: 'Expert Rust development assistance',
systemPrompt: `You are an expert Rust developer...`
},
typescript: {
name: 'TypeScript Expert',
description: 'Expert TypeScript development assistance',
systemPrompt: `You are an expert TypeScript developer...`
}
}
Sessions are automatically saved in .claude-sessions
directory as YAML files:
id: abc123
startTime: 1234567890
messages:
- role: user
content: Hello
timestamp: 1234567890
- role: assistant
content: Hi! How can I help you today?
timestamp: 1234567891
codeBlocks:
- filename: example.rs
language: rust
content: |
fn main() {
println!("Hello, world!");
}
Create a .claude-cli.config.ts
file in your project root:
// @filename: config.ts
export default {
templates: {
// Custom templates
myTemplate: {
name: 'My Template',
description: 'Custom template',
systemPrompt: 'Your system prompt here',
}
},
defaults: {
outputDir: './output',
model: 'claude-2',
autoSave: true,
sessionDir: './.claude-sessions',
}
}
Basic Chat Session
$ claude-cli chat
๐ค Welcome to Claude CLI!
๐ญ Your message: Help me write a Rust function to calculate Fibonacci numbers
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Claude:
โ I'll help you create an efficient Rust function for calculating Fibonacci numbers.
โ Here's an implementation using dynamic programming:
โ
โ ๐ fib.rs
โ fn fibonacci(n: u64) -> u64 {
โ if n <= 1 {
โ return n;
โ }
โ
โ let mut a = 0;
โ let mut b = 1;
โ
โ for _ in 2..=n {
โ let temp = a + b;
โ a = b;
โ b = temp;
โ }
โ
โ b
โ }
โ
โ Would you like me to save this file?
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Using Templates
$ claude-cli chat --template rust
๐ค Rust Expert Mode Activated!
๐ญ Your message: How do I read a large JSON file efficiently?
...
# Clone the repository
git clone https://github.com/danielbodnar/claude-cli.git
# Install dependencies
bun install
# Build
bun run build
# Run tests
bun test
# Run locally
bun run dev
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
MIT License - see the LICENSE file for details
Made with โค๏ธ using Bun.js and TypeScript