| name | aster-cli |
| description | Guidance for using the `aster` CLI to work in a codebase with an AI agent: chat and edit code, run AI code reviews, apply fixes, and manage sessions, memory, and skills. Use when running or designing aster commands, reviewing a diff or PR with aster, or when the user mentions `aster review`, `aster chat`, `aster fix`, or aster.yaml. |
Aster CLI
Aster is an AI coding agent that works in your repository: it reads and searches the code, answers questions, applies edits, and runs a review pipeline that forms hypotheses about defects, verifies them against the codebase, and reports shaped findings. It runs locally against the current repo and needs an aster.yaml (created by aster init).
Setup
aster init
aster login
aster init is interactive. Run it once per repo; keys are stored outside the repo so aster.yaml is safe to commit.
Reviewing code
aster review
aster review main..HEAD
aster review path/to/file.rs
aster review --pr 123
Review output is a list of findings. Prefer reviewing the smallest meaningful diff: a branch or range, not the whole repo.
Chat and fixes
aster chat
aster chat --print "question"
aster fix
As an agent, always use aster chat --print rather than the TUI. aster fix never writes without an explicit apply flag; run it plain first and inspect the dry-run output.
Sessions and memory
aster sessions
aster sessions show <id>
aster memory
aster memory add "fact"
aster memory add --title t "…"
Both accept --json; see below.
Skills
Aster loads agent skills from .aster/skills (project) and <config>/aster/skills (user-global).
aster skills add owner/repo
aster skills add -g owner/repo
aster skills add owner/repo -l
aster skills list
aster skills use owner/repo@x
aster skills find <query>
aster skills update
aster skills remove <name>
aster skills init <name>
add flags: -s/--skill to pick specific skills (* for all), --all for everything without prompts, -y to skip confirmation, --force to overwrite, --full-depth to keep searching inside a directory that already has a SKILL.md.
Machine-readable output
--json is global: every command takes it, before or after the subcommand, and
prints one JSON value on stdout. Failures come back the same way,
{"ok":false,"error":"…"} with a non-zero exit, so a caller parses one shape.
aster --json sessions list
aster --json skills list
aster --json memory add "fact"
aster review --json
--json also forces non-interactive behavior: wizards and prompts are skipped,
so a command either completes or errors instead of hanging.
Modes and effort
How the agent is allowed to act (--permission-mode on aster chat, or
permissions.mode in aster.yaml):
plan — explore and present a plan, never edit
manual — ask for approval before each edit (needs the TUI or --stream)
auto — apply what passes the safety check, pause for anything risky
edit — edit files without asking (the default)
--effort <off|low|medium|high> sets the reasoning budget for thinking models
on chat, aster review, and aster fix, overriding ASTER_EFFORT and
review.effort in aster.yaml.
In the TUI, /mode cycles modes and /effort sets the budget.
Conventions
- Non-interactive contexts (CI, agents): use
--print, --json, and -y variants; never invoke the TUI.
- Every command supports
--help; check it before guessing flags.
- Before editing
aster.yaml, check docs/CONFIG.md for the key and its default. Unknown keys are a hard parse error, not a warning.