Smart Outline
An AI-enhanced Go to Symbol for VS Code. It lists the symbols in the current
file in a native, fuzzy-searchable modal — like the built-in "Go to Symbol in
Editor" — but each symbol also shows a one-line AI summary of what it does.

Features
- Native modal picker — press
Cmd+Shift+O (Ctrl+Shift+O on Windows/Linux)
to open a centered QuickPick over the editor.
- Flattened symbol list — classes, functions, methods, fields, etc. from the
current file, with a breadcrumb path (e.g.
MyClass › doThing) and line number.
- Fuzzy search — type to filter; matching characters are highlighted. Search
also matches the breadcrumb and the AI summary text.
- One-line AI summaries — a short description of each symbol on the second
line, generated lazily as you move through the list and cached per workspace.
- Jump on select — press Enter to reveal the symbol and move the cursor there.
Symbols come from VS Code's own document symbol provider, so any language with a
working language server (TypeScript, Python, Terraform, Go, …) is supported.
Requirements
The symbol picker, fuzzy search, grouping, and navigation work everywhere with
no setup. The AI summaries need access to an Anthropic model, via one of two
transports (auto-detected):
1. Public Anthropic API — for most users. Bring your own key:
- Set
smartOutline.anthropicApiKey (or the ANTHROPIC_API_KEY environment
variable). Summaries then call https://api.anthropic.com/v1/messages.
- Default model:
claude-haiku-4-5 (override with smartOutline.summaryModel).
2. Internal Bedrock gateway — used automatically when an
ANTHROPIC_BEDROCK_BASE_URL is configured (env or ~/.claude/settings.json),
with a token from ANTHROPIC_AUTH_TOKEN / ANTHROPIC_API_KEY or the settings
apiKeyHelper (minted, cached ~5 min, re-minted on 401/403). Model id must be
one the gateway accepts (e.g. claude-haiku-4-5-20251001).
If neither transport is configured, the picker still works — summaries are simply
omitted (fail-soft). Set smartOutline.enableSummaries to false to skip them
entirely.
Your API key is only used to call the summary endpoint you configure; it is
not sent anywhere else.
Extension Settings
| Setting |
Default |
Description |
smartOutline.enableSummaries |
true |
Generate one-line AI summaries for symbols. |
smartOutline.anthropicApiKey |
"" |
Anthropic API key for the public API path. Falls back to ANTHROPIC_API_KEY. |
smartOutline.anthropicBaseUrl |
"" |
Override base URL for the public Anthropic API (default https://api.anthropic.com). |
smartOutline.summaryModel |
"" |
Model id override. Empty → a per-transport default (claude-haiku-4-5 public, claude-haiku-4-5-20251001 gateway). |
smartOutline.maxConcurrentSummaries |
4 |
Max concurrent summary requests. |
Known Issues / Limitations
- Summary line styling is fixed by VS Code. The QuickPick API gives no way to
change the font size, italicize, or indent the detail line beyond leading
spaces. This is a platform limitation, not a bug.
- Current file only. Smart Outline lists symbols from the active editor, not
the whole workspace.
- If Node's TLS trust store rejects the gateway's certificate, set
NODE_EXTRA_CA_CERTS to your corporate root CA when launching VS Code.
Development
pnpm install
pnpm run compile # type-check + lint + esbuild bundle
pnpm run watch # rebuild on change
pnpm test # run the test suite (downloads a VS Code build)
Press F5 (config: Run Extension (no build task)) to launch an Extension
Development Host, open a file, and press Cmd+Shift+O.
Packaging & installing the VSIX
Build a shareable .vsix (no Marketplace account needed):
npx @vscode/vsce package --no-dependencies \
--baseImagesUrl "https://git.soma.salesforce.com/sshrestha/smart-outline/raw/main/"
# → smart-outline-<version>.vsix
The --baseImagesUrl flag is required here because vsce only auto-detects
image paths for github.com / gitlab.com repos; this project is hosted on an
internal GitHub Enterprise. Point it at any URL that serves the repo's raw
files. (Omit the flag once the repo is on a recognized public host.)
Install it into VS Code or Cursor:
# from the command line
code --install-extension smart-outline-<version>.vsix
cursor --install-extension smart-outline-<version>.vsix
# Cursor: install into a specific profile
cursor --profile "<ProfileName>" --install-extension smart-outline-<version>.vsix
Or via the UI: Extensions view → ⋯ menu → Install from VSIX…. Reload
the window afterward (Developer: Reload Window).
Release Notes
0.0.1
Initial version: native QuickPick symbol picker with lazy AI summaries.