agentsclimarketplace

Actual

Skill actual-software/actual-skill/skills/actual

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, plus the Actual AI platform surface: login, logout, whoami, and advisor (org-scoped architecture Q&A). 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, signing in to Actual AI, asking the advisor, configuring runners or models, troubleshooting errors, or managing output files.From its SKILL.md

Install
npx -y skills add actual-software/actual-skill --skill actual

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 4 stars4 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

16.7 KB, as published. Nobody here has run it

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 actual 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.

Detect with:

command -v actual

Install options (try in this order):

MethodCommand
npm/npx (quickest)npm install -g @actualai/actual
Homebrew (macOS/Linux)brew install actual-software/actual/actual
GitHub Release (manual)Download from actual-software/actual-releases on GitHub

For one-off use without installing globally:

npx @actualai/actual adr-bot [flags]

After install, verify: actual --version

Before using a documented subcommand or flag, verify it exists in the installed CLI with actual --help or actual <subcommand> --help. If it is missing, help the user update the CLI; do not run development-only flags against an older release.

Commands

CommandPurposeKey Flags
actual adr-botAnalyze repo, fetch ADRs, tailor, write output--dry-run [--full], --force, --no-tailor, --project PATH, --model, --runner, --verbose, --reset-rejections, --max-budget-usd, --no-tui, --output-format, --show-errors
actual statusCheck output file state--verbose
actual authCheck the runner (coding-agent) auth status(none)
actual config showDisplay current config(none)
actual config set <key> <value>Set a config value(none)
actual config pathPrint config file path(none)
actual runnersList available runners(none)
actual modelsList known models by runner(none)
actual loginSign in to Actual AI (browser OAuth)--org <id>, --api-url <url>, --no-browser
actual logoutSign out of Actual AI and clear local credentials(none)
actual whoamiShow the signed-in Actual AI identity (no network)(none)
actual advisor "<query>"Ask the Advisor an architecture questionReleased v0.2.0: --org <uuid>, --repo <uuid>, --api-url <url>; newer builds may add named/automatic scope
actual cache clearClear local analysis and tailoring caches(none)

Platform Identity & Advisor

These commands talk to the Actual AI platform (your account/org) and are separate from actual auth — actual auth only checks the local coding-agent/runner (claude/codex/cursor) that adr-bot drives. login/logout/whoami manage your Actual AI platform identity; advisor asks organization- or repository-scoped architecture questions against it. (The runner/model sections below pertain to adr-bot, not to these.)

Endpoint config — production works without an override.

  • login reads --api-url <url>, then ACTUAL_AUTH_URL, then defaults to https://app.actual.ai.
  • advisor reads --api-url <url>, then ACTUAL_API_URL, then defaults to https://api-service.api.prod.actual.ai.
  • OAuth client_id/scopes default to actual-cli and openid profile offline_access adr:query adr:review (override via ACTUAL_OAUTH_CLIENT_ID / ACTUAL_OAUTH_SCOPES).

login — interactive; hand off to the human

actual login runs a browser OAuth flow (auth-code + PKCE + a 127.0.0.1 loopback). It needs a human at a browser, so an agent cannot complete it inside a non-interactive shell. Drive it like this:

  1. First check whether the user is already signed in with actual whoami (no network; non-zero exit / "Not signed in" when logged out). If signed in, skip login.
  2. If not signed in, ask the human to run login, or run it for them and surface the URL:
    actual login --no-browser       # prints the authorize URL instead of opening a browser
    actual login --org <org-id>     # multi-org accounts: pre-select an org (single-org auto-selects)
    
    With --no-browser, give the printed URL to the user to open; the CLI waits on the loopback redirect to finish the sign-in.
  3. A multi-org user who omits --org picks the org on the consent page; if the redirect times out, re-run with --org <id>.

Do not attempt to script the browser/consent step — treat login as a human handoff, then resume automation once whoami succeeds.

whoami — safe, non-interactive

actual whoami

Prints the cached identity — Organization, Account, Member, Scopes — with no network call. Use it as the pre-flight gate before advisor: exit code 2 ("Not signed in to Actual AI") means run login first.

logout

actual logout

Best-effort server-side token revoke, then always clears local credentials. Safe and non-interactive.

advisor — non-interactive, async query

actual advisor "<question>" asks an architecture question. It is agent-friendly (no TTY required): it starts an async job, polls to completion, and prints a plain-text summary followed by the related ADRs. Progress ("advisor thinking…") goes to stderr; the answer goes to stdout.

actual advisor "How should I handle database access in a new service?"

# point at a local/staging endpoint — one export steers it; --api-url overrides
ACTUAL_API_URL=https://your-advisor-endpoint actual advisor "…"

# released v0.2.0: scope by connected-repository UUID
actual advisor "…" --repo <repo-uuid>

# newer builds only; verify these flags with `actual advisor --help`
actual advisor "…" --repo actual-software/actual-cli
actual advisor --show-scope
actual advisor --repo none
actual advisor --repo auto

Requires a valid signed-in session — NotLoggedIn (exit 2) means run login first. The advisor transparently refreshes an expired token before the call. Output is human-readable text today (no --json flag yet).

Scope behavior is version-dependent:

  • Released v0.2.0 accepts only a connected-repository UUID; omitting --repo uses organization scope.
  • Newer builds may accept a name or owner/name, remember a per-working-tree scope, auto-detect from origin, and expose --show-scope, --repo none, and --repo auto.

Always inspect actual advisor --help before using the newer scope workflow.

For the full OAuth flow, scopes, multi-org selection, the advisor poll model, and org/repo scoping, see references/platform-advisor.md.

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

RunnerBinaryAuthDefault Model
claude-cliclaudeclaude auth loginclaude-sonnet-4-6
anthropic-api(none)ANTHROPIC_API_KEYclaude-sonnet-4-6
openai-api(none)OPENAI_API_KEYgpt-5.2
codex-clicodexOPENAI_API_KEY or codex login (ChatGPT OAuth)gpt-5.2
cursor-cliagentOptional CURSOR_API_KEY(cursor default)

Model-to-Runner Inference

The CLI auto-selects a runner from the model name:

Model PatternInferred Runner
sonnet, opus, haiku (short aliases)claude-cli
claude-* (full names)anthropic-api
gpt-*, o1*, o3*, o4*, chatgpt-*codex-cli
codex-*, gpt-*-codex*codex-cli
UnrecognizedError 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 TerminalIOError unless disabled.

Always pass --force --no-tui on every actual adr-bot invocation:

  • --no-tui disables TUI rendering that requires a terminal
  • --force skips interactive confirmation prompts that cannot receive input

Use the agent's built-in question/confirmation tools (e.g., AskUserQuestion) for user confirmation instead of relying on CLI prompts.

Sync Quick Reference

The most common sync patterns:

# 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.00

For 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)

command -v actual       # Must succeed before anything else

If missing, follow the install steps in CLI Not Installed above. Do NOT proceed until actual --version succeeds.

1. Pre-flight (LOW freedom -- exact commands)

actual runners          # Verify runner is available
actual auth             # Verify authentication (for claude-cli)
actual config show      # Review current configuration

If any check shows a problem, diagnose and fix before proceeding.

2. Dry-run (LOW freedom -- exact command)

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., AskUserQuestion). Do NOT rely on CLI prompts — they will fail in non-interactive shells. If no, stop.

4. Execute (LOW freedom -- exact command)

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.md.

6. 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:

Run the bundled scripts/diagnose.sh by its absolute path under the active actual skill directory. Do not assume a Claude-specific install location. For example, when the current directory is the skill directory:

bash scripts/diagnose.sh

This 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 auth).

Troubleshooting Quick Reference

ErrorExit CodeLikely CauseQuick Fix
ClaudeNotFound2claude binary not in PATHInstall Claude Code CLI
ClaudeNotAuthenticated2Not logged inRun claude auth login
CodexNotFound2codex binary not in PATHInstall Codex CLI
CodexNotAuthenticated2No auth for codexSet OPENAI_API_KEY or run codex login
CursorNotFound2agent binary not in PATHInstall Cursor CLI
ApiKeyMissing2Required env var not setSet ANTHROPIC_API_KEY or OPENAI_API_KEY
NotLoggedIn2Not signed in to the Actual AI platformRun actual login
CodexCliModelRequiresApiKey2ChatGPT OAuth with explicit modelSet OPENAI_API_KEY (OAuth only supports default model)
CreditBalanceTooLow3Insufficient API creditsAdd credits to account
ApiError3API request failedCheck API URL, network, credentials
ApiResponseError3Unexpected API responseCheck API status, retry
RunnerFailed1Runner process erroredCheck runner output, logs
RunnerOutputParse1Could not parse runner outputCheck model compatibility
RunnerTimeout1Runner exceeded time limitIncrease invocation_timeout_secs
ConfigError1Invalid config fileCheck YAML syntax, run actual config show
AnalysisEmpty1No analysis resultsCheck project path, repo content
TailoringValidationError1Tailored output invalidRetry, or use --no-tailor
TerminalIOError1CLI needs a TTY (non-interactive shell)Add --force --no-tui flags
IoError5File I/O failureCheck permissions, disk space
UserCancelled4User cancelled operation(intentional)

For full error details with hints and diagnosis steps, see references/error-catalog.md.

Exit Code Categories

CodeCategoryErrors
1General / runtimeRunnerFailed, RunnerOutputParse, ConfigError, RunnerTimeout, AnalysisEmpty, TailoringValidationError, InternalError, TerminalIOError
2Auth / setupClaudeNotFound, ClaudeNotAuthenticated, CodexNotFound, CodexNotAuthenticated, CursorNotFound, ApiKeyMissing, CodexCliModelRequiresApiKey, NotLoggedIn
3Billing / APICreditBalanceTooLow, ApiError, ApiResponseError
4User cancelledUserCancelled
5I/OIoError

Config Quick Reference

Config file: ~/.actualai/actual/config.yaml (override with ACTUAL_CONFIG or ACTUAL_CONFIG_DIR env vars).

Most-used config keys:

KeyDefaultPurpose
runnerclaude-cliWhich runner to use
modelclaude-sonnet-4-6Model for Anthropic runners
output_formatclaude-mdOutput format: claude-md, agents-md, cursor-rules
batch_size15ADRs per batch (min 1)
concurrency10Parallel requests (min 1)
invocation_timeout_secs600Runner timeout in seconds (min 1)
max_budget_usd(none)Spending cap (positive, finite)

For all 18 config keys with validation rules, see references/config-reference.md.

Output Formats

FormatFileHeader
claude-md (default)CLAUDE.md# Project Guidelines
agents-mdAGENTS.md# Project Guidelines
cursor-rules.cursor/rules/actual-policies.mdcYAML frontmatter (alwaysApply: true)

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:

FileWhen to Load
references/sync-workflow.mdDebugging sync failures, understanding sync internals
references/runner-guide.mdSetting up a runner, model compatibility, runner-specific behavior
references/error-catalog.mdTroubleshooting a specific error with full diagnosis steps
references/config-reference.mdLooking up config keys, validation rules, dotpath syntax
references/output-formats.mdOutput format questions, managed section behavior, merge logic
references/platform-advisor.mdLogin/OAuth flow, scopes, multi-org selection, advisor poll model, org/repo scoping

Additional Resources

For anything not covered by this skill or its reference files, fetch the full CLI documentation:

Keep looking

Skills are one crate of 628,853. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.