Skip to main content

Jean Claude CLI - AI-powered development workflows for any codebase

Project description

Jean Claude CLI

Universal AI Developer Workflows - Transform any project into an AI-driven development environment

Jean Claude (jc) is a CLI tool that enables programmatic AI agent orchestration for any codebase. Execute prompts, run multi-phase workflows, and monitor agent activity with a unified interface.

Features

  • Universal CLI: Single jc command for all operations
  • Two-Agent Workflow: Opus plans features, Sonnet implements them
  • Coordinator Pattern: Intelligent agent-to-human communication with smart escalation
  • Beads Integration: Execute workflows directly from Beads tasks with jc work
  • Real-Time Streaming: Watch agent output as it works with --stream mode
  • SDK-Based Execution: Claude Agent SDK with Bedrock authentication
  • Workflow Composition: Multi-phase SDLC workflows (plan → implement → verify → complete)
  • Git Worktree Isolation: Safe parallel development without conflicts
  • Real-Time Telemetry: SQLite event store with live monitoring UI
  • Push Notifications: ntfy.sh integration for critical decision escalations

Installation

# Install with uv
uv pip install jean-claude

# Or install globally with uvx
uvx install jean-claude

# Verify installation
jc --version

Quick Start

# Initialize ADW in your project
cd my-project/
jc init

# Run an adhoc prompt
jc prompt "Analyze the codebase structure"

# Run a two-agent workflow (Opus plans, Sonnet implements)
jc workflow "Add user authentication with JWT"

# Or work on a Beads task directly
jc work jean_claude-2sz.4

# Run a simple chore workflow
jc run chore "Add error handling to login"

Commands

Core Commands

jc init                              # Initialize ADW in current project
jc prompt "your prompt here"         # Execute adhoc prompt
jc prompt "your prompt" --stream     # Stream output in real-time
jc run chore "task description"      # Run chore workflow
jc run feature "feature description" # Run feature workflow

Two-Agent Workflow

The flagship workflow pattern: Opus plans, Sonnet implements.

# Full workflow (plan + implement)
jc workflow "Build user authentication"

# Use custom models
jc workflow "Complex feature" -i opus -c opus

# Run initializer and coder separately (modular approach)
jc initialize "Task description" -w my-workflow
jc implement my-workflow

Coordinator Pattern (Agent-to-Human Communication)

Jean Claude implements a coordinator pattern where the main Claude Code instance intelligently triages agent questions, only escalating to you when truly needed.

How it works:

  1. Sub-agents can call ask_user or notify_user tools when they need help
  2. Messages appear in the workflow's INBOX directory
  3. Coordinator (main Claude Code instance) sees questions and decides:
    • Answer directly (90% of cases) - Technical questions, test failures, code conventions
    • Escalate to human (10% of cases) - Business decisions, security, architecture choices
  4. You only get ntfy push notifications for critical decisions

Setting up ntfy notifications:

# 1. Install ntfy app on your phone (iOS/Android/Web)
# 2. Choose a unique topic name
echo "jean-claude-$(openssl rand -hex 6)"

# 3. Subscribe to the topic in the ntfy app
# 4. Configure Jean Claude
export JEAN_CLAUDE_NTFY_TOPIC="your-topic-name"

See NTFY_SETUP.md and docs/coordinator-pattern.md for details.

When you get escalated:

  • SSH to your machine
  • Write response to agents/{workflow-id}/OUTBOX/response.json
  • Agent receives your decision and continues

Slash commands:

  • /mailbox - View and respond to agent messages (coordinator use)

Beads Integration

Work directly from Beads tasks:

# Execute workflow from Beads task
jc work jean_claude-2sz.4

# Plan only, don't implement
jc work task-123 --dry-run

# Pause for approval after planning
jc work task-123 --show-plan

# Use Opus for both agents
jc work task-123 --model opus

Monitoring & Status

jc status                            # Check workflow status
jc logs                              # View workflow event logs
jc dashboard                         # Start web monitoring dashboard
jc version                           # Display version information

Project Management

jc prime                             # Gather project context
jc migrate                           # Update project to latest version
jc onboard                           # Show CLAUDE.md content
jc upgrade                           # Upgrade jc to latest version
jc upgrade --check                   # Check for updates only

Cleanup

Keep your project clean by removing temporary files created by agents:

jc cleanup                           # Remove files older than 7 days
jc cleanup --age 14                  # Remove files older than 14 days
jc cleanup --all                     # Remove all temporary files
jc cleanup --agents                  # Also clean agent work directories
jc cleanup --dry-run                 # Preview what will be deleted

Temporary files are organized in .jc/ subdirectories:

  • .jc/temp/ - Verification scripts (check_.py, demo_.py)
  • .jc/reports/ - Status reports (*_COMPLETE.md, *_VERIFICATION.md)
  • .jc/verification/ - Test outputs and logs

Streaming Output

Real-time streaming displays output as the agent works:

# Stream output in real-time
jc prompt "Analyze the codebase" --stream

# Show tool uses and thinking process
jc prompt "Refactor authentication" --stream --show-thinking

# Different models with streaming
jc prompt "Quick question" --stream -m haiku
jc prompt "Complex analysis" --stream -m opus

Benefits of streaming:

  • See progress in real-time as the agent works
  • Better user experience for long-running prompts
  • Optional visibility into tool uses and thinking process
  • Graceful interrupt handling (Ctrl+C)

Configuration

Jean Claude uses .jc-project.yaml for project-specific configuration:

directories:
  specs: specs/
  agents: agents/
  trees: trees/
  source: src/
  tests: tests/

tooling:
  test_command: uv run pytest
  linter_command: uv run ruff check .

workflows:
  default_model: sonnet
  auto_commit: true

Architecture

project/
├── agents/                     # Agent working directories
│   └── {workflow_id}/
│       ├── state.json          # Workflow state with features
│       └── events.jsonl        # Event log (JSONL format)
├── trees/                      # Git worktrees (isolated execution)
├── specs/                      # Workflow specifications
│   └── beads-{task_id}.md      # Auto-generated from Beads tasks
├── .jc/                        # Internal state and temporary files
│   ├── events.db               # SQLite event store
│   ├── temp/                   # Temporary verification scripts
│   ├── reports/                # Status and completion reports
│   └── verification/           # Test outputs and logs
└── .jc-project.yaml            # Project configuration

Authentication

Anthropic API

export ANTHROPIC_API_KEY="your-api-key"

AWS Bedrock

export CLAUDE_CODE_USE_BEDROCK=1
export AWS_PROFILE="your-profile"
export AWS_REGION="us-west-2"

Development

# Clone and install
git clone https://github.com/joshuaoliphant/jean-claude
cd jean-claude
uv sync

# Run CLI in development
uv run jc --help

Testing

Jean Claude has a focused test suite that tests OUR code, not external dependencies. We mock external tools like Beads rather than testing their implementation.

Running Tests

# Run all tests (parallel execution)
uv run pytest

# Run with verbose output
uv run pytest -v

# Run specific test file
uv run pytest tests/test_work_command.py

# Run specific test class
uv run pytest tests/test_work_command.py::TestWorkCommand

# Run tests matching a pattern
uv run pytest -k "beads"

# Run with coverage
uv run pytest --cov=jean_claude --cov-report=html

Test Organization

tests/
├── conftest.py                  # Root fixtures (cli_runner, mock_beads_task, etc.)
├── core/
│   ├── conftest.py              # Core module fixtures (sample_beads_task, subprocess mocks)
│   ├── test_beads*.py           # Beads model and integration tests
│   └── ...
├── orchestration/
│   ├── conftest.py              # Orchestration fixtures (workflow_state, execution_result)
│   ├── test_auto_continue.py    # Auto-continue workflow tests
│   └── test_two_agent.py        # Two-agent pattern tests
├── templates/
│   ├── conftest.py              # Template path fixtures
│   └── test_beads_spec.py       # Template tests
├── test_work_command.py         # CLI work command tests
├── test_dashboard.py            # Dashboard tests
└── ...

Key Fixtures

Fixture Location Purpose
cli_runner conftest.py Click CLI testing
mock_beads_task conftest.py Standard BeadsTask for testing
mock_beads_task_factory conftest.py Factory for custom BeadsTask
work_command_mocks conftest.py All mocks for work command
sample_beads_task core/conftest.py Fully-populated BeadsTask
mock_subprocess_success core/conftest.py Subprocess mock for success
mock_project_root orchestration/conftest.py Temp project with agents/ dir
sample_workflow_state orchestration/conftest.py Pre-configured workflow state

Test Categories

  • Unit tests: Test individual functions and classes
  • Integration tests: Test CLI commands and workflows
  • Model tests: Test Pydantic models and validation
  • Template tests: Test Jinja template rendering

Contributing

  1. Only test OUR code - Mock external tools (Beads, etc.), don't test them
  2. Write tests first (TDD approach)
  3. Use existing fixtures from conftest.py files
  4. Follow the mock patching rule: patch where used, not where defined
  5. Run full test suite before submitting PR

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jean_claude-0.7.0.tar.gz (914.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

jean_claude-0.7.0-py3-none-any.whl (186.5 kB view details)

Uploaded Python 3

File details

Details for the file jean_claude-0.7.0.tar.gz.

File metadata

  • Download URL: jean_claude-0.7.0.tar.gz
  • Upload date:
  • Size: 914.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.5.5

File hashes

Hashes for jean_claude-0.7.0.tar.gz
Algorithm Hash digest
SHA256 f412a24eb0bf77a434d444cc8a1bb790898b0e4223fe37e254416ea6f88206d2
MD5 b7d7cdfe7f9d12e33476746a4dd05647
BLAKE2b-256 abb4e35e62cb67f0586a7952564cea638d5112e2a7d858d4173ad144348226d8

See more details on using hashes here.

File details

Details for the file jean_claude-0.7.0-py3-none-any.whl.

File metadata

File hashes

Hashes for jean_claude-0.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 72cc1e60ccc95c8a2297cd6558fa5dc28c7bb64c64b612123c04383515439a8f
MD5 689f41047ede494e37eaf623e8bece9b
BLAKE2b-256 341a8b5f2287023723bb5009f7484ef454612e8c61c88a5aab873c5329d3aea7

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page