Skip to main content
On this page

adk-cli

Python package home for the adk CLI subcommands. NOT a slash-invokable skill — install.py skips this directory when symlinking skills into agent skill dirs. The adk binary at <repo>/bin/adk is symlinked to ~/.local/bin/adk at install time and dispatches to the modules under scripts/.

Source

skills/adk-cli/SKILL.md

Frontmatter

YAML
name: adk-clidescription: Python package home for the `adk` CLI subcommands. NOT a slash-invokable skill — install.py skips this directory when symlinking skills into agent skill dirs. The `adk` binary at `<repo>/bin/adk` is symlinked to `~/.local/bin/adk` at install time and dispatches to the modules under `scripts/`.disable-model-invocation: true

Workflow body

adk-cli — CLI subcommand package

This folder is the Python module home for the adk shell command. It is not invokable as a slash-skill (disable-model-invocation: true) and install.py skips it when fanning skills out into each host’s skill directory.

The dispatcher is <repo>/bin/adk, which is symlinked into ~/.local/bin/adk at install time.

Subcommand surface

Text
adk pr-scan       walk Slack channels → upsert PR rows into the queueadk pr-queue …    list / show / add / update / clean / ready-to-merge / releaseadk skill-run …   run any /adk-* skill in Claude / Cursor / Codex / custom harnessadk repo …        add / update / list / branch / migrate — clone + per-branch indexadk doctor        validate env, deps, MCPs, ollama server, token presenceadk completion …  emit a bash | zsh | fish completion script

Every subcommand accepts -y / --yes for headless / smart-default operation (no prompts). Skills can shell out via adk <subcmd> -y ….

Files under scripts/

  • pr_scan.pyadk pr-scan. Walks main message AND thread replies, emits one row per (PR-link, message-ts) so reactions land on the right message. --channels / --channels-only override the configured channel list.
  • pr_queue.pyadk pr-queue …. Single-shot add from a slack permalink OR PR URL; cheap meta refresh on one row; lock release; merged-row cleanup; the ready-to-merge summary used at the tail of every review.
  • repo.pyadk repo …. Clones repos to $ADK_DATA_HOME/repos/<name>/ and indexes each tracked branch at $ADK_DATA_HOME/repos/.indices/<name>/branches/<slug>/code-index/. Default branch is auto-indexed by add; use --branch X (multi-arg) on add/update, and the repo branch {add,remove,list} subgroup to manage branches. Incremental reindex on update when HEAD has moved.
  • doctor.pyadk doctor. Plain-text table of pass/warn/fail per check. --tui uses textual when importable; falls back to plain text otherwise.
  • completion.pyadk completion bash|zsh|fish. Emits a static script. install.py installs them to the conventional user paths (unless --no-completions).
  • queue_io.py — concurrency-safe queue read/update/merge + the atomic acquire_next_row / release_row used by /adk-pr-review no-arg mode.
  • slack_helpers.py — slack web-api client (read + reactions + thread reply).
  • queue_release.pyrelease_after_review called by /adk-pr-review’s report.py tail to update queue status + reconcile Slack reactions.
  • agent_harness.py — shared model-depth defaults and command builders for Claude / Cursor / Codex / custom runners.
  • skill_run.pyadk skill-run, a generic harness launcher for any ADK slash skill. --detailed forwards programmatic-detail intent; --deep selects the runner’s stronger model profile.

Queue location

$ADK_CONFIG_HOME/pr-queue.json5.

Constitutional posture

  • Slack token: PRESENCE only. doctor never reads the value (§VII).
  • Queue updates: every write goes through file_lock on a .lock sidecar.
  • Cleanups: pr-queue clean --all requires --yes; the constitution §I.7 inhibits any blanket delete the user didn’t explicitly ask for.

References shipped

(References authored on first real use of each sub-flow.)