Stack Viewer
A side pane that maps every component your session runs and where it is installed from: skills, subagents, commands, hooks, MCP servers, plugins and mods, settings, memory and output styles. Pick a type in the sidebar to see its scopes as a tree in precedence order (Enterprise, CLI flag, Local, Project, User, Plugin, Built-in) with what each one holds, and which components are active, shadowed by a higher scope, or off.
npx claude-code-templates@latest --skill โขโขโขโขโขโขโขโขโขโขโขโขโขโขโขโขโขโขโขโขInteractive Terminal Locked
Unlock this skill to run and inspect the interactive installation sequence.
stack-viewer
A side pane that maps every component your Claude Code session runs and where each one is installed from. The sidebar lists the component types. Pick one and the pane draws its scopes as a tree, in precedence order, with what is installed in each scope and whether it is active, shadowed by a higher scope, or off.
โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ โ Session stack Claude Code 2.1.306 โ
โ ~/work/app 158 active ยท 7 shadowed ยท 0 off โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
COMPONENTS Skills 21 active ยท 1 shadowed
โ1: Skills 21 Enterprise โบ User โบ Project on a name clash ยท plugin
2: Subagents 4 skills are namespaced, both load
3: Commands 99
4: Hooks 7 1 Enterprise โ managed settings dir
5: MCP servers 3 2 โพ User 2 ~/.claude/skills
6: Plugins & mods 3 deploy
7: Settings 11 pdf-tools
8: Memory 2
9: Output styles 8 3 โพ Project 2 .claude/skills
dฬถeฬถpฬถlฬถoฬถyฬถ shadowed by User
name active release-notes
nฬถaฬถmฬถeฬถ shadowed
name off 4 โพ Plugin 2 <plugin>/skills ยท โฆ
โ read off files hello-mod:greet
team-tools:changelog
5 claude.ai account โ enabled on claude.ai
6 MCP server โ skills an MCP serverโฆ
7 โธ Built-in 16 ship with Claude Code
batch, claude-api, debug +13 click to open
[ refresh ] [ fold all ] [ close ]Run /stack to open it, /stack refresh (or running /stack again) to read the stack again, /stack close to close it.
What it shows
Each type lists every scope it can be installed at, empty ones included, so you can see where a component could live as well as where it does. The orange number is the scope's precedence: 1 wins over 2 when two components share a name.
| Type | Scopes, highest first | When names clash |
|---|---|---|
| โฆ Skills | Enterprise, User, Project, Plugin, claude.ai account, MCP server, Built-in | Enterprise โบ User โบ Project; plugin skills are namespaced (plugin:skill), so both load |
| โ Subagents | Enterprise, CLI flag (--agents), Project, User, Plugin, Built-in | Enterprise โบ CLI flag โบ Project โบ User โบ Plugin |
| โฏ Commands | User, Project, Plugin (including mod commands), MCP prompts, Built-in | A skill wins over a command file with the same name |
| โฏ Hooks | Enterprise, CLI flag, Local, Project, User, Plugin (hooks.json and function-hook modules) | None: every source runs. allowManagedHooksOnly and disableAllHooks turn the rest off |
| โ MCP servers | Enterprise, Local, Project, User, Plugin, claude.ai, This session (--mcp-config, SDK) | Enterprise โบ Local โบ Project โบ User โบ Plugin โบ claude.ai, the whole entry wins. A .mcp.json server nobody approved shows awaiting approval |
| โ Plugins & mods | Enterprise, CLI flag, Local, Project, User (enabledPlugins), Project skills dir, User skills dir, This session (--plugin-dir) | The highest settings source that names a plugin decides whether it is on |
| โ Settings | Enterprise, CLI flag (--settings), Local, Project, User | A value from the highest source wins; objects and lists merge |
| ยถ Memory | Enterprise, Project, Local, User, Auto memory | None: every file loads |
| โ Output styles | Enterprise, Project, User, Plugin, Built-in | One style is selected (โ
), by the highest settings source with outputStyle |
It draws in Anthropic's palette only: ivory for what loads, warm grays for paths and notes, orange for the selected type, the precedence numbers and anything shadowed. A shadowed component is struck through with the scope that wins over it (shadowed by User, overridden by Local). An off component is installed but not loaded: a skill with a broken frontmatter, a hook under allowManagedHooksOnly, a plugin disabled in a higher scope, an MCP server that did not connect.
Where the data comes from
What is loaded comes from the engine, so it is what the session really runs:
/context breakdown ($.session.usage({ breakdown }))$.command.list()prompt.attachment, agent_listing_delta)$.settings.read({ source }) (hooks, enabledPlugins, outputStyle, every key)mcp_server.source), once the server has been calledprompt.composeWhere a file sits comes from reading the folders each type installs to: ~/.claude (or $CLAUDE_CONFIG_DIR), the project's .claude/, the managed settings directory, ~/.claude/plugins/installed_plugins.json, .claude.json and .mcp.json. That is how the pane finds what the engine does not list, a project skill shadowed by a user one for example. A scope known only from files, never confirmed by the engine, is marked โ: a plugin loaded with --plugin-dir, an MCP server not in any config file, a mod in a project skills dir (it loads once the folder is trusted).
From MCP config files the mod keeps server names only, never their env, headers or arguments. Settings values are shown in one short line: env shows variable names, never values, and a settings key whose name looks sensitive (key, token, secret, auth, helper, uuid, orgโฆ) shows โขโขโข. Hook commands and URLs are shown with bearer tokens, secret-looking parameters and flags (token=, --api-key=, sig=โฆ) and long opaque strings masked as โขโขโข. Nothing is written to disk or kept between sessions.
The built-in subagents (Explore, Plan, general-purpose, claude-code-guideโฆ) are read off the engine's agent listing, the reminder that tells the model which agent types it can launch: every type it names that no agent file, setting or plugin defines. The engine sends it with the first message of a session, so until one is sent their scope says so; it fills in on its own when the listing arrives. Nested .claude/ folders between the working directory and the repository root are not scanned; the engine still reports what loads from them.
Controls
1โ9.โธ folded, โพ open) to open or fold it. A folded scope previews its first names and how many more it holds. Long built-in lists start folded.r or refresh reads the stack again, after you install something mid-session.Where it draws
In the fullscreen layout the engine docks the pane beside the transcript (turn it on with /tui fullscreen, at least 110 columns). On the classic layout it sits above the prompt. Under 72 columns the sidebar becomes a row of chips above the tree. In Claude Desktop the pane draws in the session's side panel, and every padded cell uses non-breaking spaces so the columns keep their width.
Options
Set them in user or managed settings under pluginConfigs["stack-viewer@skills-dir"].options ("stack-viewer" when loaded with --plugin-dir):
| Option | Default | What it does |
|---|---|---|
columns | 84 | Columns asked for the docked pane (40โ140); a width you drag it to wins |
Install
npx claude-code-templates@latest --mod ui/stack-viewer
The CLI writes the plugin to .claude/skills/stack-viewer/, which Claude Code loads as stack-viewer@skills-dir once the project is trusted. To load it everywhere, copy that folder to ~/.claude/skills/.
Needs Claude Code 2.1.287 or later. It only observes: every hook passes its event on unchanged.
How to Use & Getting Started
# Step 1: Initialize skill agent setup
npx skills add Stack Viewer --install-production
python -m pip install -r requirements.txt
codex plugin install Stack Viewer@latest
export API_KEY=secret_token_key_here
Installation Runbook & Walkthrough Locked
Unlock this skill to reveal complete step-by-step setup guides, terminal commands, configuration recipes, repository links, and interactive installation video walkthroughs.
Unlock full access to Stack Viewer
Get instant access to complete setup guides, repository source code, and integration assets.
More in mod
View all mod skills โPrompt Cache Control
Prompt-cache meter above the Claude Code prompt: how many tokens each request read from, wrote to and sent past the cache, a live countdown to the cache's expiry, and what to do about it (keep going, compact or clear). The TTL follows Claude Code's own rules for your account (1 hour on a Claude subscription, 5 minutes on an API key, cloud provider or usage credits, plus the TTL variables and setting) and corrects itself from request timing. When Claude Code will compact an idle conversation by itself, it counts down to that too. cache opens a per-turn table.
Jev Model Router
Picks the model and the reasoning effort for each task with TypeSafe's Jev, a System One decision model reached either through TypeSafe's own API or the Vercel AI Gateway. Routes subagent models at agent.spawn and the main loop's effort and model at turn.step, in both directions, falling back to the engine's built-in classifier when no key is set.
Jev Skill Suggestion
Keeps the skill listing out of the context window and lets TypeSafe's Jev, a System One decision model, pick at most one skill per prompt from the skills' descriptions, the way TypeSafe's skill-suggestion cookbook does: one request ranks every skill and asks whether the prompt needs a skill at all, a second re-reads the top three with their SKILL.md and can reject them all. The winner's SKILL.md is attached to the prompt, so the skills can be hidden from the model altogether ( jev-skill-suggestion:setup makes them user-invocable-only and context counts them at 0). Falls back to the engine's built-in classifier when no key is set.