actual
Original:🇺🇸 English
Translated
1 scripts
Feature-complete companion for the actual CLI, an ADR-powered CLAUDE.md/AGENTS.md generator. Runs and troubleshoots actual adr-bot, status, auth, config, runners, and models. Covers all 5 runners (claude-cli, anthropic-api, openai-api, codex-cli, cursor-cli), all model patterns, all 3 output formats (claude-md, agents-md, cursor-rules), and all error types. Use when working with the actual CLI, running actual adr-bot, configuring runners or models, troubleshooting errors, or managing output files.
16installs
Added on
NPX Install
npx skill4agent add actual-software/actual-skill actualTags
Translated version includes tags in frontmatterSKILL.md Content
View Translation Comparison →actual CLI Companion
Inline knowledge and operational workflows for the actual CLI. Read this file first; load reference files only when you need deeper detail for a specific topic.
CLI Not Installed
If the binary is not in PATH, stop and help the user install it before doing anything else. All commands, pre-flight checks, and diagnostics require the CLI.
actualDetect with:
bash
command -v actualInstall options (try in this order):
| Method | Command |
|---|---|
| npm/npx (quickest) | |
| Homebrew (macOS/Linux) | |
| GitHub Release (manual) | Download from |
For one-off use without installing globally:
bash
npx @actualai/actual adr-bot [flags]After install, verify:
actual --versionCommands
| Command | Purpose | Key Flags |
|---|---|---|
| Analyze repo, fetch ADRs, tailor, write output | |
| Check output file state | |
| Check authentication status | (none) |
| Display current config | (none) |
| Set a config value | (none) |
| Print config file path | (none) |
| List available runners | (none) |
| List known models by runner | (none) |
Runner Decision Tree
Use this to determine which runner a user needs:
Has claude binary installed?
YES -> claude-cli (default runner, no API key needed)
NO -> Do they want Anthropic models?
YES -> anthropic-api (needs ANTHROPIC_API_KEY)
NO -> Do they want OpenAI models?
YES -> codex-cli or openai-api (needs OPENAI_API_KEY)
NO -> cursor-cli (needs agent binary, optional CURSOR_API_KEY)Runner Summary
| Runner | Binary | Auth | Default Model |
|---|---|---|---|
| claude-cli | | | claude-sonnet-4-6 |
| anthropic-api | (none) | | claude-sonnet-4-6 |
| openai-api | (none) | | gpt-5.2 |
| codex-cli | | | gpt-5.2 |
| cursor-cli | | Optional | (cursor default) |
Model-to-Runner Inference
The CLI auto-selects a runner from the model name:
| Model Pattern | Inferred Runner |
|---|---|
| claude-cli |
| anthropic-api |
| codex-cli |
| codex-cli |
| Unrecognized | Error with suggestions |
For deep runner details (install steps, compatibility, special behaviors), see.references/runner-guide.md
Non-Interactive Environments
This skill runs inside coding agents (Claude Code, Codex, Cursor) where the Bash tool does not provide a TTY. The CLI's TUI prompts and confirmation dialogs will fail with unless disabled.
TerminalIOErrorAlways pass on every invocation:
--force --no-tuiactual adr-bot- disables TUI rendering that requires a terminal
--no-tui - skips interactive confirmation prompts that cannot receive input
--force
Use the agent's built-in question/confirmation tools (e.g., ) for user confirmation instead of relying on CLI prompts.
AskUserQuestionSync Quick Reference
The most common sync patterns:
bash
# Preview what sync would do (safe, no file changes)
actual adr-bot --dry-run --force --no-tui
# Preview with full content
actual adr-bot --dry-run --full --force --no-tui
# Run sync
actual adr-bot --force --no-tui
# Sync specific subdirectories only (monorepo)
actual adr-bot --force --no-tui --project services/api --project services/web
# Use a specific runner/model
actual adr-bot --force --no-tui --runner anthropic-api --model claude-sonnet-4-6
# Skip AI tailoring (use raw ADRs)
actual adr-bot --force --no-tui --no-tailor
# Re-offer previously rejected ADRs
actual adr-bot --force --no-tui --reset-rejections
# Set spending cap
actual adr-bot --force --no-tui --max-budget-usd 5.00For the complete 13-step sync internals, see.references/sync-workflow.md
Operational Workflow: Running Sync
Follow this pattern whenever running sync. Do NOT skip pre-flight.
0. Verify CLI installed (LOW freedom -- exact check)
bash
command -v actual # Must succeed before anything elseIf missing, follow the install steps in CLI Not Installed above. Do NOT proceed until succeeds.
actual --version1. Pre-flight (LOW freedom -- exact commands)
bash
actual runners # Verify runner is available
actual auth # Verify authentication (for claude-cli)
actual config show # Review current configurationIf any check shows a problem, diagnose and fix before proceeding.
2. Dry-run (LOW freedom -- exact command)
bash
actual adr-bot --dry-run --force --no-tui [--full] [user's flags]Show the user what would change. Let them review.
3. Confirm (HIGH freedom)
Ask user if they want to proceed using the agent's built-in tools (e.g., ). Do NOT rely on CLI prompts — they will fail in non-interactive shells. If no, stop.
AskUserQuestion4. Execute (LOW freedom -- exact command)
bash
actual adr-bot --force --no-tui [user's flags]5. On failure: Diagnose
Match the error against the troubleshooting table below. For full error details, load .
references/error-catalog.md6. Fix and retry
Apply the fix, then return to step 1 to verify.
Operational Workflow: Diagnostics
For comprehensive environment checks, run the bundled diagnostic script:
bash
bash .claude/skills/actual/scripts/diagnose.shThis checks all binaries, auth status, environment variables, config, and output files in one pass. It is read-only and never modifies anything.
Use inline commands instead when checking a single thing (e.g., just ).
actual authTroubleshooting Quick Reference
| Error | Exit Code | Likely Cause | Quick Fix |
|---|---|---|---|
| ClaudeNotFound | 2 | | Install Claude Code CLI |
| ClaudeNotAuthenticated | 2 | Not logged in | Run |
| CodexNotFound | 2 | | Install Codex CLI |
| CodexNotAuthenticated | 2 | No auth for codex | Set |
| CursorNotFound | 2 | | Install Cursor CLI |
| ApiKeyMissing | 2 | Required env var not set | Set |
| CodexCliModelRequiresApiKey | 2 | ChatGPT OAuth with explicit model | Set |
| CreditBalanceTooLow | 3 | Insufficient API credits | Add credits to account |
| ApiError | 3 | API request failed | Check API URL, network, credentials |
| ApiResponseError | 3 | Unexpected API response | Check API status, retry |
| RunnerFailed | 1 | Runner process errored | Check runner output, logs |
| RunnerOutputParse | 1 | Could not parse runner output | Check model compatibility |
| RunnerTimeout | 1 | Runner exceeded time limit | Increase |
| ConfigError | 1 | Invalid config file | Check YAML syntax, run |
| AnalysisEmpty | 1 | No analysis results | Check project path, repo content |
| TailoringValidationError | 1 | Tailored output invalid | Retry, or use |
| TerminalIOError | 1 | CLI needs a TTY (non-interactive shell) | Add |
| IoError | 5 | File I/O failure | Check permissions, disk space |
| UserCancelled | 4 | User cancelled operation | (intentional) |
For full error details with hints and diagnosis steps, see.references/error-catalog.md
Exit Code Categories
| Code | Category | Errors |
|---|---|---|
| 1 | General / runtime | RunnerFailed, RunnerOutputParse, ConfigError, RunnerTimeout, AnalysisEmpty, TailoringValidationError, InternalError, TerminalIOError |
| 2 | Auth / setup | ClaudeNotFound, ClaudeNotAuthenticated, CodexNotFound, CodexNotAuthenticated, CursorNotFound, ApiKeyMissing, CodexCliModelRequiresApiKey |
| 3 | Billing / API | CreditBalanceTooLow, ApiError, ApiResponseError |
| 4 | User cancelled | UserCancelled |
| 5 | I/O | IoError |
Config Quick Reference
Config file: (override with or env vars).
~/.actualai/actual/config.yamlACTUAL_CONFIGACTUAL_CONFIG_DIRMost-used config keys:
| Key | Default | Purpose |
|---|---|---|
| claude-cli | Which runner to use |
| claude-sonnet-4-6 | Model for Anthropic runners |
| claude-md | Output format: claude-md, agents-md, cursor-rules |
| 15 | ADRs per batch (min 1) |
| 10 | Parallel requests (min 1) |
| 600 | Runner timeout in seconds (min 1) |
| (none) | Spending cap (positive, finite) |
For all 18 config keys with validation rules, see.references/config-reference.md
Output Formats
| Format | File | Header |
|---|---|---|
| claude-md (default) | | |
| agents-md | | |
| cursor-rules | | YAML frontmatter ( |
Managed sections use markers: / .
<!-- managed:actual-start --><!-- managed:actual-end -->Merge behavior:
- New root file: header + managed section
- New subdir file: managed section only (no header)
- Existing with markers: replace between markers, preserve surrounding content
- Existing without markers: append managed section
For full format details and merge internals, see.references/output-formats.md
Reference Files
Load these only when you need deeper detail on a specific topic:
| File | When to Load |
|---|---|
| Debugging sync failures, understanding sync internals |
| Setting up a runner, model compatibility, runner-specific behavior |
| Troubleshooting a specific error with full diagnosis steps |
| Looking up config keys, validation rules, dotpath syntax |
| Output format questions, managed section behavior, merge logic |
Additional Resources
For anything not covered by this skill or its reference files, fetch the full CLI documentation:
- Full docs (Markdown): https://cli.actual.ai/docs.md — complete command reference, all flags, runners, output formats, config keys, and troubleshooting
- LLM summary: https://cli.actual.ai/llms.txt — concise machine-readable overview