Comparison: CLI vs Claude Code skills

Two ways to drive attune-ai: the attune CLI or Claude Code skills invoked through HybridRouter. They share the same underlying commands but differ significantly in how you invoke them, what context they see, and which workflows they fit.

Feature comparison

Capability CLI (attune) Claude Code / HybridRouter
Invocation attune <command> subcommands Natural language or /skill syntax via route_user_input()
Cost tracking cmd_costs, cmd_costs_today, cmd_costs_export, cmd_costs_reset Via MCP tools
Memory management cmd_remember, cmd_forget, cmd_lessons, cmd_memory_capture, cmd_memory_recall, cmd_memory_topics, cmd_memory_forget_topic Indirectly through skill calls
Telemetry cmd_telemetry_show, cmd_telemetry_savings, cmd_telemetry_export, routing stats, model and agent views Not directly exposed
Workflow execution cmd_workflow_list, cmd_workflow_info, cmd_workflow_run Via routed skill invocations
Provider control cmd_provider_show, cmd_provider_set Not directly exposed
Routing intelligence Static — you name the subcommand HybridRouter learns RoutingPreference entries (keyword, skill, confidence) and improves with usage_count
Autocomplete / suggestions Shell completion HybridRouter.get_suggestions(partial) returns ranked completions
CI/CD integration Yes — every command returns an integer exit code No
Context awareness No — operates on flags and stored state only Yes — sees conversation history and codebase
Interactive follow-up Manual — run another command Conversational — the router can propose next steps
Setup pip install + API key, then cmd_setup / cmd_validate / cmd_doctor Plugin install inside Claude Code

Key tradeoffs

CLI is more capable for operational tasks. The cost, telemetry, provider, and memory command groups are fully exposed only through the CLI. If you need to export cost data (cmd_costs_export), inspect routing statistics (cmd_telemetry_routing_stats), or reset tracked data (cmd_costs_reset), the CLI is the only path.

HybridRouter improves over time; the CLI does not. Each call to HybridRouter.learn_preference(keyword, skill, args) persists a RoutingPreference with a confidence score and usage_count. Over repeated use, the router gets better at guessing your intent from partial input. The CLI always requires the exact subcommand.

The CLI is the right choice for automation. Every public command function (cmd_costs, cmd_workflow_run, etc.) returns an integer exit code, making it composable in shell scripts and CI pipelines. HybridRouter.route() returns a dict, which is designed for programmatic consumption in a conversational context, not shell chaining.

When to use the CLI

When to use HybridRouter / Claude Code skills

Source files

Tags: cli, commands