···156156# Shows: true, false
157157```
158158159159+### Completing locally-installed CLIs
160160+161161+Package manager completion does more than complete the package manager's own flags — it also **delegates to CLIs installed as local project dependencies**. If a CLI implements tab's completion protocol (directly or via a [framework adapter](#framework-adapters)), it becomes completable through your package manager _without_ being on your `PATH` and without installing its completion script separately:
162162+163163+```bash
164164+pnpm exec my-cli <TAB> # completes my-cli's subcommands and flags
165165+pnpm dlx my-cli <TAB>
166166+pnpm my-cli <TAB> # the bare form works too
167167+```
168168+169169+Under the hood, tab strips the package-manager wrapper (`exec`, `x`, `run`, `dlx`), detects whether the target CLI supports completion, and forwards the request to it — falling back to running the CLI _through_ the package manager (e.g. `pnpm my-cli complete -- …`) so locally-installed binaries resolve. The same works for `npm exec`, `yarn`, and `bun x`.
170170+171171+> **Note:** Completion is registered against the package-manager binary (`npm`, `pnpm`, `yarn`, `bun`). `npx` and `bunx` are separate commands with no completion of their own, so `npx my-cli <TAB>` / `bunx my-cli <TAB>` won't complete — use `npm exec my-cli` / `bun x my-cli` instead.
172172+159173## Framework Adapters
160174161175tab provides adapters for popular JavaScript CLI frameworks.