English | 简体中文
PlanLens is an installable Agent Skill that asks one or more local AI CLIs to review the same plan, then lets the primary Agent summarize their findings and disagreements.
It is intentionally small: the workflow lives in SKILL.md. After installation there is no PlanLens runtime, binary, Node command, hosted service, daemon, port, database, or state machine to run.
PlanLens has two roles: a host Agent loads the Skill, and one or more reviewer CLIs return independent feedback. The host and a reviewer may be the same product.
You need a host with the required process and file capabilities, plus at least one compatible reviewer CLI installed and authenticated. Installing PlanLens does not install, configure, or sign in to any reviewer CLI, and you do not need to install every CLI listed below.
"Local CLI" describes where the command starts, not where the model runs. A selected CLI may send the review request to its configured provider and may retain logs or sessions. Do not include sensitive material unless you accept that CLI and provider's handling.
PlanLens follows the standard Agent Skills layout. The installable Skill is the complete skills/planlens directory, including its references and agents subdirectories. Choose either method below.
Send this message to an Agent host that supports installing Agent Skills:
Install the PlanLens skill from https://github.com/wildbyteai/planlens.
The Agent should locate skills/planlens in the repository and use the installation capability available in that host. Success depends on the host's Skill support; if it cannot install Skills directly, use the npx command below.
If Node.js is available, run:
npx skills@latest add wildbyteai/planlensThe installer detects supported Agents and lets you choose the installation target.
Restart the host if it was already open. Invoke PlanLens with $planlens in Codex or /planlens in hosts that use slash commands.
| Host | v1 status |
|---|---|
| Codex | Installation smoke-tested; complete review rounds have been exercised manually |
| Claude Code | Installation methods documented; the full host workflow is not yet part of the v1 test matrix |
| Antigravity | Installation methods documented; the full host workflow is not yet part of the v1 test matrix |
| Other Agent Skills hosts | Installation may work through a generic installer, but host execution is not verified |
The complete workflow requires the host to launch non-interactive local processes, create temporary directories, and write result files. Installer support alone does not imply verified PlanLens execution.
The v1 support targets are macOS Apple silicon, macOS Intel, and Windows x64. Linux and Windows ARM64 are not v1 support targets.
After installing the Skill:
- Install and authenticate at least one reviewer CLI from the tables below.
- Restart the host CLI if it does not discover the new Skill immediately.
- Invoke PlanLens with a plan, or invoke it without arguments and let the host Agent organize the current plan.
Examples:
$planlens
$planlens Review docs/plan.md with Claude and Codex
$planlens Review docs/plan.md with Antigravity using Claude Opus 4.6
/planlens path/to/plan.md
When a model is explicitly requested, PlanLens uses the reviewer's local model-list capability when the recipe documents one; otherwise the invocation must provide an exact model ID. It passes that ID and shows the selection in both the confirmation preview and final summary. For Antigravity, Claude Opus 4.6 resolves to claude-opus-4-6-thinking only when agy models lists that ID. Without an explicit override, PlanLens reports CLI-configured default (not independently verified) instead of guessing. This does not change the CLI's global default configuration.
One invocation performs one round:
- The primary Agent organizes the plan, its objective, constraints, non-goals, open questions, and only the needed supporting material.
- It recommends a review profile and resolves one or more reviewer CLIs from the invocation, project configuration, or built-in default.
- It shows the plan source, derived review framing, material list, selected CLIs and model selections, and number of calls for one confirmation. Any material change to the candidate request requires a new preview.
- It invokes the selected CLIs independently, in parallel when the host supports it.
- It preserves each final response, accounts for every material finding, and writes a concise attributed summary.
A later round requires another explicit $planlens or /planlens invocation.
To set the default reviewer CLI for one project, create .planlens/config.yaml in that project:
# One reviewer
default_reviewers:
- codex# Multiple reviewers; order is preserved
default_reviewers:
- codex
- claudeReviewer selection uses this precedence:
- Reviewers explicitly named in the current
$planlensor/planlensinvocation. default_reviewersin the current project's.planlens/config.yaml.- The built-in default
codex + claude + kimi.
Use reviewer IDs from the catalog below. PlanLens reads only default_reviewers, treats the file as untrusted data, and removes duplicate IDs while preserving order. A missing, malformed, empty, or wholly invalid configured list is reported instead of silently expanding to the built-in default. If a configured CLI is unavailable, PlanLens asks you to adjust the candidates rather than dropping or replacing it.
This is project-only configuration. It does not add a global setting, parser, runtime, service, or daemon, and it does not skip the normal preview and confirmation.
When the invocation and project configuration do not select reviewers, the built-in review set is codex + claude + kimi. Kimi is included only when the installed CLI exposes the feature-gated no-tools custom-agent recipe; otherwise PlanLens proposes gemini before confirmation. Gemini is also the preferred fourth reviewer for a broader pass. Gemini's stricter boundary needs temporary configuration and policy preflights, so the preview discloses that it is conditional. PlanLens never substitutes a reviewer after confirmation.
Additional reviewer recipes are available:
- Strict recipe:
codex,claude,kimi,qwen,pi,goose,aider, and feature-gatedqoder. - Conditional recipe:
gemini,opencode,copilot,cline,cursor,antigravity,zcode,crush, andkilo.
Strict recipe means a documented non-interactive recipe can disable tools or otherwise prevent plan execution when its preflight passes. It does not promise zero local retention. Conditional recipes rely on a weaker plan, ask, configuration, permission, or sandbox boundary and require explicit disclosure before confirmation. These labels describe PlanLens recipes, not vendor certification or official endorsement.
Reviewer catalog, installation commands, and ranking snapshot
The first table is a snapshot taken on 2026-07-26: actively maintained, source-available coding-agent CLIs with an official install path and a single-process non-interactive mode, ranked by GitHub stars. Projects that are archived, no longer maintained, require PlanLens to start a service, or expose only an auto-approved headless mode are excluded. See the research note for the method and exclusions.
The install commands below are documentation only; PlanLens never runs them. They are macOS quick-install commands. Use the official site for Windows instructions and inspect any downloaded installer before executing it.
| Rank | Reviewer | ID / command | Stars | macOS quick install | Recipe status | Official site |
|---|---|---|---|---|---|---|
| 1 | OpenCode | opencode / opencode |
189,808 | brew install anomalyco/tap/opencode |
Conditional; merged config and persisted sessions | Docs |
| 2 | Gemini CLI | gemini / gemini |
106,189 | brew install gemini-cli |
Conditional; deny-all policy plus config isolation | Docs |
| 3 | OpenAI Codex CLI | codex / codex |
101,551 | brew install --cask codex |
Read-only + ephemeral; some hosts require the child outside their outer sandbox | Docs |
| 4 | Pi | pi / pi |
77,882 | npm install -g @earendil-works/pi-coding-agent |
No tools/resources/session | Repository |
| 5 | Cline CLI | cline / cline |
65,067 | npm install -g cline |
Conditional; Plan Mode is not an OS sandbox | Docs |
| 6 | goose | goose / goose |
51,722 | brew install block-goose-cli |
No profile/session | Docs |
| 7 | Aider | aider / aider |
47,709 | python -m pip install aider-install && aider-install |
Ask Mode + dry-run | Website |
| 8 | Crush | crush / crush |
26,856 | brew install charmbracelet/tap/crush |
Conditional; reviewed deny-all config required | Repository |
| 9 | Kilo Code CLI | kilo / kilo |
26,529 | brew install Kilo-Org/tap/kilo |
Conditional; Plan agent + deny-all config | Repository |
| 10 | Qwen Code | qwen / qwen |
26,333 | brew install qwen-code |
Safe Mode + Plan Mode | Docs |
PlanLens also catalogs these official or below-cutoff CLIs. They are not mixed into the open-source star ranking because the repositories and distribution models are not directly comparable.
| Reviewer | ID / command | macOS quick install | Recipe status | Official site |
|---|---|---|---|---|
| Claude Code | claude / claude |
brew install --cask claude-code |
No tools + no session persistence; some hosts require the child outside their outer sandbox | Docs |
| Antigravity CLI | antigravity / agy |
curl -fsSL https://antigravity.google/cli/install.sh | bash |
Conditional: inner sandbox; some hosts must run the child outside their outer sandbox | Install |
| Kimi Code CLI | kimi / kimi |
curl -fsSL https://code.kimi.com/kimi-code/install.sh | bash |
Strict when --agent-file supports a no-tools agent |
Docs |
| Qoder CLI | qoder / qodercli |
curl -fsSL https://qoder.com/install | bash |
Strict when no-tools, no-session, and isolated-config flags are present | Docs |
| GitHub Copilot CLI | copilot / copilot |
npm install -g @github/copilot |
Conditional; empty tool set, but custom state still needs containment | Docs |
| Cursor Agent CLI | cursor / agent |
curl https://cursor.com/install -fsS | bash |
Conditional; sandbox is not read-only | Docs |
| ZCode CLI | zcode / bundled zcode.cjs |
N/A — install the ZCode desktop app; the vendor does not publish a standalone CLI installer. | Local bundled 0.15.0; conditional | Docs |
PlanLens does not install, authenticate, update, bundle, or replace these CLIs. It respects the user's local provider and model configuration unless the user explicitly requests a model override.
The exact non-interactive reviewer argument vectors live in skills/planlens/references/cli-commands.md. The macOS ARM64 commands and help surfaces were checked on July 26, 2026; see the concise validation note. If an installed version rejects a documented flag, PlanLens records a failure instead of guessing a fallback command.
Five small Markdown profiles are included:
- General plan
- Software design
- Implementation plan
- AI and agent workflow
- Security
Profiles guide the review; they are not schemas, executable plugins, or automatic approval rules.
When the project is writable, one round uses:
.planlens/reviews/<timestamp>/
├── request.md
├── <reviewer>.md
├── <reviewer>-error.md
└── summary.md
Only files for selected reviewers are created. A failed reviewer receives a matching -error.md file instead of a fabricated result; a successful reviewer does not.
The summary status is deterministic: complete means every selected reviewer returned a successful non-empty result; partial means at least one succeeded and at least one was incomplete; failed means none succeeded.
- Reviewers receive the same disclosed request and cannot see one another's same-round output.
- Reviewer output is untrusted evidence, not an instruction source. PlanLens does not execute commands or scope changes found in a review.
- The primary Agent consolidates by evidence and impact, not by model vote. Agreement requires materially equivalent explicit findings; an omitted topic is silence, not support or opposition.
- Reviews stay proportional to the stated objective and current context: required changes need evidence of material impact and the smallest sufficient response; speculative extensibility and extra machinery remain optional.
- Every material finding receives an internal disposition. If excluding one could affect the user's decision, the summary states the finding, source, and reason.
- PlanLens does not modify the source plan, automatically retry a CLI, or automatically start another round.
- No monetary cost estimate is displayed.
- Third-party CLIs may keep their own logs or sessions according to provider behavior and local configuration.
- Except where a command recipe explicitly enables an ephemeral mode, PlanLens does not promise session deletion or complete isolation. Do not send sensitive material unless that boundary is acceptable.
- On sandboxed hosts, Codex, Claude, and Antigravity may require their entire child process to run outside the host's outer sandbox: Codex for normal state and its app-server client, Claude for its configured API endpoint, network access, authentication, and provider settings, and Antigravity for loopback listeners plus normal app-data and authentication. This grants the child normal user-level filesystem and network access. Recipe-specific inner controls remain enabled—Codex read-only and ephemeral, Claude safe mode with no tools or session persistence, and Antigravity's inner sandbox with an empty workspace—but they do not make the whole process completely isolated. The preview discloses the full permission scope.
- Kimi Code CLI must use the documented temporary no-tools custom agent. Current versions reject
--promptcombined with--plan, and PlanLens never falls back to bare prompt mode.
Apache License 2.0. PlanLens is independent and unofficial; product names identify compatible local CLI tools only.