| Crates.io | scud-cli |
| lib.rs | scud-cli |
| version | 1.46.0 |
| created_at | 2025-12-02 21:46:10.911665+00 |
| updated_at | 2026-01-25 04:02:27.931947+00 |
| description | Fast, simple task master for AI-driven development |
| homepage | |
| repository | |
| max_upload_size | |
| id | 1962737 |
| size | 1,391,700 |
Fast, simple task master for AI-driven development - Rust implementation.
This is a high-performance Rust rewrite of the SCUD task management system. It replaces the external task-master CLI with a fast, single-binary solution that:
scud (Rust Binary)
├── Core Commands (No AI - Instant)
│ ├── init # Initialize .scud/ and install agents
│ ├── tags # List tags or set active tag
│ ├── list # List tasks with filters
│ ├── view # Open interactive HTML viewer in browser
│ ├── show # Show task details
│ ├── set-status # Update task status
│ ├── next # Find next available task
│ ├── stats # Show statistics
│ └── doctor # [EXPERIMENTAL] Diagnose stuck states
│
├── AI Commands (Direct LLM API)
│ ├── parse-prd # Parse PRD markdown into tasks
│ ├── analyze-complexity # Analyze task complexity
│ ├── expand # Break down complex tasks
│ └── reanalyze-deps # Analyze cross-tag dependencies
│
└── Storage (SCG)
└── .scud/tasks/tasks.scg
Install globally via npm - this will build the Rust binary automatically:
npm install -g scud-task
Requirements: Rust toolchain must be installed (rustup.rs)
Install directly via Cargo:
cargo install scud-cli
Or build from source:
git clone https://github.com/pyrex41/scud.git
cd scud/scud-cli
cargo install --path .
scud --version
scud --help
cargo build
cargo build --release
# Initialize SCUD
scud init
# List tags
scud tags
# Switch to a tag
scud tags auth
# List tasks
scud list
scud list --status pending
# Show task details
scud show 3
# Update task status
scud set-status 3 in-progress
# Find next available task
scud next
# Show statistics
scud stats
# Open interactive task viewer in browser
scud view
# Clean up tasks (archives by default)
scud clean # Archive all tags
scud clean --tag auth # Archive specific tag
scud clean --list # List archived phases
scud clean --restore <name> # Restore archived phase
scud clean --delete # Permanently delete (use with caution)
Note:
scud cleanarchives tasks by default instead of deleting them. This provides a safety net for accidental cleanups. Use--deleteto permanently remove tasks. Archives are stored in.scud/archive/.
Diagnose stuck workflow states:
# Check for issues in all tags
scud doctor
# Check specific tag with custom stale threshold
scud doctor --tag auth --stale-hours 12
# Auto-fix recoverable issues (stale locks, orphan tasks)
scud doctor --fix
The doctor command detects:
Requires: API key environment variable (see Provider Configuration)
# Parse PRD into tasks
scud parse-prd docs/features/auth.md --tag auth
# Analyze complexity
scud analyze-complexity # All tasks
scud analyze-complexity --task 5 # Specific task
# Expand complex tasks
scud expand 7 # Specific task
scud expand --all # All tasks >13 complexity
# Reanalyze cross-tag dependencies
scud reanalyze-deps --all-tags
For integration with external tools that expect UUID task IDs (like Descartes):
# Generate tasks with UUID IDs instead of sequential numbers
scud parse requirements.md --tag myproject --id-format uuid
This generates tasks with 32-character UUID identifiers (e.g., a1b2c3d4e5f6789012345678901234ab) instead of sequential numbers (1, 2, 3).
Key behaviors:
a1b2c3d4...) for readabilityscud show command displays the full UUID| Operation | Old (task-master) | New (Rust) | Improvement |
|---|---|---|---|
| Startup | ~500ms | ~10ms | 50x faster |
| List tasks | ~100ms | ~5ms | 20x faster |
| Parse PRD | ~3-5s | ~2-3s | ~40% faster |
| Token overhead | ~21k | ~500 | 42x reduction |
SCUD supports multiple LLM providers: xAI (Grok), Anthropic (Claude), OpenAI (GPT), and OpenRouter.
# Initialize with xAI (Grok) - recommended for fast code generation
scud init --provider xai
export XAI_API_KEY=your-key
# Or initialize with Anthropic (Claude)
scud init --provider anthropic
export ANTHROPIC_API_KEY=your-key
# Interactive mode - prompt for provider
scud init
The configuration is stored in .scud/config.toml:
[llm]
provider = "xai"
model = "xai/grok-code-fast-1"
max_tokens = 4096
For complete provider documentation, see PROVIDERS.md.
| Provider | Environment Variable | Default Model |
|---|---|---|
| xAI | XAI_API_KEY |
xai/grok-code-fast-1 |
| Anthropic | ANTHROPIC_API_KEY |
claude-sonnet-4-20250514 |
| OpenAI | OPENAI_API_KEY |
gpt-4-turbo |
| OpenRouter | OPENROUTER_API_KEY |
anthropic/claude-sonnet-4 |
struct Task {
id: String,
title: String,
description: String,
status: TaskStatus, // pending, in-progress, done, etc.
complexity: u32, // Fibonacci scale: 1,2,3,5,8,13,21
priority: Priority, // high, medium, low
dependencies: Vec<String>, // Task IDs this depends on
details: Option<String>, // Technical details
test_strategy: Option<String>,
complexity_analysis: Option<String>,
created_at: Option<String>,
updated_at: Option<String>,
}
struct Phase {
name: String,
tasks: Vec<Task>,
id_format: IdFormat, // sequential (default) or uuid
}
[llm]
provider = "xai"
model = "xai/grok-code-fast-1"
max_tokens = 4096
Located in src/llm/prompts.rs:
parse_prd() - Converts markdown to structured tasksanalyze_complexity() - Scores task difficultyexpand_task() - Breaks down complex tasksreanalyze_dependencies() - Cross-tag dependency analysisThe Rust CLI integrates seamlessly with the existing SCUD system:
bin/scud.js detects and delegates to Rust binaryscud-cli/
├── Cargo.toml
├── src/
│ ├── main.rs # CLI entry point
│ ├── commands/
│ │ ├── mod.rs
│ │ ├── init.rs # Core commands
│ │ ├── tags.rs
│ │ ├── ...
│ │ └── ai/ # AI commands
│ │ ├── parse_prd.rs
│ │ ├── analyze_complexity.rs
│ │ ├── expand.rs
│ │ └── reanalyze_deps.rs
│ ├── models/
│ │ ├── task.rs
│ │ └── phase.rs
│ ├── storage/
│ │ └── mod.rs # JSON I/O
│ └── llm/
│ ├── client.rs # Anthropic API
│ └── prompts.rs # Prompt templates
Commands enum in main.rssrc/commands/src/commands/mod.rssrc/llm/prompts.rssrc/commands/ai/LLMClient::complete() or complete_json()# Build and test
cargo build
cargo test
# Test specific command
cargo run -- init
cargo run -- tags
cargo run -- --help
# Test AI commands (requires API key)
export ANTHROPIC_API_KEY=sk-...
cargo run -- parse-prd test.md --tag test
cargo build --release
# Binary: target/release/scud
# Copy to /usr/local/bin or similar
The npm package builds the Rust binary during installation:
cargo build --release during npm installbin/ directorybin/scud.js is a thin wrapper that executes the binaryMIT
See main SCUD repository for contribution guidelines.