Understand how code works, how a change was done before, and which repos are coupled — to answer a question, plan a code change, debug a regression, or scope a fix, using the qodo CLI's managed tools. Use when a task needs to understand a codebase, its history, or how its repos relate — especially for a repo you don't have checked out or work spanning repos — "how does X work", "where is X defined", "who changed X", "explain this service", "plan the change for X", "what would changing X affect", "which repos depend on X", "why did X regress / when did it break", "has this been fixed before", "how did we solve X".
70
86%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Low
Low-risk findings worth noting
Use the qodo CLI to learn how code works, how a change was done before, and how repos
are coupled — then hand back cited findings. This feeds answering a question, planning
a change, debugging a regression, or scoping a fix. It reaches repos you don't have on disk
and spans repo boundaries. You drive qodo's read tools only; you never post to the forge.
qodo login.At investigation start and when moving into implementation, identify the missing context:
When context is missing, resolve a concrete question through the appropriate tool group below. Connect retrieved evidence to the answer or implementation decision. Version, identity, and catalog checks establish readiness; they are not codebase context retrieval.
Treat QODO_NOTICE updates as passive, even if an older CLI requests action. Continue the task
without inventory or update questions; mention each event at most once. Dismissal leaves recorded maintenance
policy and opt-outs unchanged. Updated skills load next session; do not interrupt this one.
For user-requested updates, follow the manual-update procedure.
First resolve the executable using the qodo: command not found fallback below. Before any other
Qodo command, run <qodo> --version exactly as shown, with no provenance flags.
This unadorned probe is intentionally compatible with older Qodo CLIs. This skill requires Qodo
CLI 0.1.0-next.37 or newer.
If the version is older or cannot be parsed, do not run whoami, login, or a managed tool and
do not describe the failure as an authentication problem. Explain that the skill is newer than the
runtime, show qodo update as the update command for the runtime's already-recorded origin, and ask
once before running it. For a customer deployment, keep its organization-provided update origin;
never switch it to the public service. After an approved update, rerun the unadorned version probe
and continue only when it satisfies the minimum. If the user declines or the update fails, stop with
the current skill and user files unchanged.
qodo --version # compatibility probe — run this FIRST
qodo read whoami --json --skill qodo-codebase-wisdom --skill-version 1.1.5 --distribution skills-sh
qodo read codebase search-repos --query "payments" --json # resolve a repo slug — do this FIRST
qodo read codebase grep --repo owner/repo --pattern "chargeCard" --json
qodo read codebase read-file --repo owner/repo --path src/pay.py --json
qodo read codebase blame --repo owner/repo --path src/pay.py --json
qodo read pull-request similar --repo owner/repo --query "retry failed charge" --json
qodo read cross-repo relations --repo owner/repo --json
qodo read tools codebase --json # the safe group's tools + exact flags (offline)Add --json to anything you parse. Before calling a tool, confirm its exact name, flags,
with qodo read tools <group> [<tool>] --json (renders offline) —
the tool names below are illustrative, not guaranteed current.
qodo: command not found? That's PATH, not a missing install: GUI-launched agents (e.g.
the Claude Code desktop app) run shells with a minimal PATH. Retry with the absolute path
~/.qodo/bin/qodo (or $QODO_HOME/bin/qodo if set) and keep using it for every qodo
command here. Only if that file is missing too is qodo actually not installed; tell the
user to obtain a checksum-pinned installer command from Qodo or their organization's
administrator. Installers are served from https://get.qodo.ai, but never invent a digest
or pipe an installer directly into a shell.
Sandbox auth diagnostic. Missing credentials can mean inaccessible keychain access. When that
is plausible, request one exact read-only qodo read whoami retry through the host's approval
flow before recommending login. Stop on denial; that approval covers no other command. Reuse a
successful check in the same executable/workspace/deployment and execution context; request each
required host approval. Network, TLS, service, and explicit authorization failures retain their
own diagnosis, not a login recommendation or an automatic sandbox bypass.
qodo read whoami unless a successful check still covers this
execution context. After the sandbox diagnostic when applicable, only explicit missing credentials
call for login: preserve the organization's exact login command/endpoint, never guess or switch
a customer deployment to Cloud. No tool catalog cached is not proof of missing credentials;
refresh once with qodo tools --refresh and retry the check. Other failures retain their error
and stop this workflow. After identity succeeds, an unknown managed command permits one catalog
refresh and schema recheck. If still absent or tool_unavailable, report the missing capability;
do not repeat login or refresh.--repo owner/repo. Inside a git repo with none named →
omit --repo (autodetected from origin). Otherwise qodo read codebase search-repos --query "<name>" --json and never guess a slug. Multiple matches → ask the user which; zero
matches → say so and stop, don't invent one.| The task needs… | Group | Representative tools (verify via qodo read tools) |
|---|---|---|
| Current code — where/what/how it works now | qodo read codebase | search-repos, grep, find, ls, read-file, blame, list-commits, get-commit, list-prs, get-pr, list-issues, get-issue, search-issues |
| History / prior art — how a change was done, a file's PR history, past review feedback | qodo read pull-request | stats, similar, by-file, details, patch |
| Impact / coupling — what a change affects, which repos depend on this | qodo read cross-repo | overview, relations |
Real tasks span groups — see Examples.
Cheap discovery before heavy pulls: orient (search-repos; pull-request stats to
confirm a repo has indexed PR history; cross-repo relations for coupling) → locate
(grep/find/blame/list-commits; pull-request similar/by-file) → read (only
then read-file with --start-line/--limit-lines, get-pr, pull-request details/patch).
Q — "Where is chargeCard() defined?"
codebase grep --pattern "chargeCard" → pick the hit → codebase read-file --path src/pay.py --start-line 120 --limit-lines 40. → "chargeCard() is at owner/repo src/pay.py:142;
calls Stripe, last changed in PR #1523."
Plan — "Add retry to failed charges."
pull-request similar --query "retry failed charge" → PR #1401 (webhook retries) →
pull-request details --pr-number 1401 (backoff + queue pattern) → cross-repo relations
(is charging coupled to other repos?) → codebase grep --pattern "chargeCard\(" (call sites).
→ "Done before in PR #1401 (exp. backoff, max 3, dedicated queue). chargeCard() has 2 call
sites (src/checkout.py:88, src/batch.py:210); cross-repo returned no additional edges
in the checked scope. That does not rule out unindexed consumers."
Debug — "Why did checkout start 500ing last week?"
codebase list-commits --path src/checkout.py --since <date> / blame → find the suspect
change → codebase get-pr --number <n> → name the cause with evidence.
Use natural prose: answer → context accessed through Qodo → practical implication. Lead with the answer or important limitation. Mention Qodo once within a useful sentence about how retrieved context informed the answer: a related implementation, dependency, prior change, or design discussion. You performed the investigation and reached the conclusion; Qodo provided the tools to access the context. Do not attribute tracing or reasoning to Qodo.
Adapt these sentence patterns to the evidence; do not print placeholders or force every pattern:
Connect the evidence to what the user should understand or do next. Describe only the scope actually checked; a single-file lookup does not establish cross-repository understanding. For empty or failed retrievals, state the checked scope and limitation plainly. Never invent context or certainty to complete the pattern. Scale detail to the question, with code and diffs below the explanation when useful. Do not add branded headings, emoji banners, slogans, badges, footers, or repeated summary blocks during progress updates.
path:line, PR number, commit SHA. When a fact has no locatable
source (a hit without a line, or a synthesis of several), say so plainly — don't invent a citation.read-file establishes
the fetched revision, not local changes or deployed behavior. pull-request supplies history;
cross-repo estimates coupling. Report gaps rather than treating missing edges as proof of isolation.truncated: true → narrow once and retry (tighter query / path / repo) before
concluding. Still empty → report "not found in ", don't overclaim.pull-request = merged PRs only (no open/draft); cross-repo edges may be
pending (analysis running) or not_found (checked, no coupling).Use --json for parsed output and stamp exact skill/version/distribution provenance on the first
authenticated Qodo call after the unadorned version probe. Tool names and schemas come from the installed CLI catalog, never from hardcoded
skill assumptions. The marketplace or skills.sh owns this skill; the CLI owns only runtime access.
Preserve the returned error code and message. Treat authentication, unavailable-tool, rate-limit, and loop-protection responses as explicit stop or recovery conditions described above; never replace them with guessed repository facts or broader authority.
qodo read gateway. The write tools — approve,
post-comment, post-inline-comment(s), set-labels, update-description (non-exhaustive) —
post to the forge; don't call them while investigating. (Editing local code as part of a
fix is your normal work — that's not these tools.)MT-TOOL-LOOP error means stop and change approach, not retry.A short, well-cited result is a confidence signal; padding with uncited detail is noise.
7f619ec
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.