npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@viniraioli/pi-claude-style-tools

v1.0.61

Published

Claude Code-style tool rows for pi with Ctrl+O image previews and consistent built-in, MCP, and custom tool rendering

Readme

pi-claude-style-tools

Claude Code inspired tool rendering for Pi — Shiki-powered diffs, status dots, branch connectors, file icons, and configurable output modes.

Features

  • Compact built-in tool rendering for read, bash, grep, find, ls, edit, and write
  • Claude-style OpenAI tool rendering for apply_patch plus common Pi/OpenAI-style tools like webfetch, web_search, fetch_content, task tools, and context tools
  • apply_patch diff previews that render parsed file patches in the call phase, similar to edit/write
  • Adaptive edit/write diffs with split or unified layouts, syntax highlighting, and inline word-level emphasis
  • Diff stat bar with colored add/remove summary and hunk metadata
  • Progressive collapsed diff hints that shorten on narrow terminals
  • Thinking labels during streaming and final messages, with context sanitization
  • MCP-aware rendering with hidden, summary, and preview modes
  • Configurable output modes for read, search, bash, and MCP results
  • Live running previews that show a few output lines for active tool calls (latest lines for bash), persisting until the next tool/text activity
  • Subagent completion notifications restyled to match the same Claude-style tool rows
  • RTK rewrite integration that folds rewrite notices into the bash tool row with a muted (RTK) badge and expanded-only rewrite details
  • Transparent tool backgrounds in transparent mode
  • Theme-adaptive palette — branch connectors, dim text, spinner accent, and diff backgrounds automatically follow the active pi theme (set themeAdaptive: false to keep the fixed Claude-style palette)
  • Transparent edit/write diffs with universal red/green diff colors
  • Global transparent chrome patch for all tool rows, including unknown/custom tools

Configuration

Set in .pi/settings.json or ~/.pi/settings.json:

{
  "toolBackground": "transparent",
  "readOutputMode": "preview",
  "searchOutputMode": "preview",
  "mcpOutputMode": "preview",
  "previewLines": 8,
  "bashOutputMode": "opencode",
  "bashCollapsedLines": 10,
  "liveToolPreview": true,
  "liveToolPreviewLines": 5,
  "diffCollapsedLines": 24,
  "themeAdaptive": true,
  "diffTheme": "github-dark"
}

Theme integration

When themeAdaptive is true (default), the following colors are derived from the active pi theme on every render and re-derived whenever the theme changes:

| Element | Derived from | |---------|--------------| | Branch connectors (├─, └─, ) | dim (fallback: muted) | | "✻ Worked for Ns" line | muted | | Thinking-block italic gray | muted | | Diff add/remove accents | toolDiffAdded / toolDiffRemoved | | Diff background tints | mixed against toolSuccessBg base | | Spinner verb text (Working…) | borderAccent (fallback: accent) | | Spinner status text | muted |

User-supplied diffTheme presets and diffColors overrides always win over theme-derived defaults. File-type icons (e.g. ts, py, rs) keep their language-identity colors and are not theme-derived.

Set themeAdaptive: false to keep the original fixed Claude-style palette regardless of the active pi theme.

Toggle at runtime with /cc-theme

/cc-theme           # show current setting + theme name
/cc-theme status    # show current setting + color preview (incl. spinner)
/cc-theme on        # follow pi theme
/cc-theme off       # keep fixed Claude palette
/cc-theme toggle    # flip the current value

The selection is persisted to ~/.pi/settings.json and applied to the next rendered tool row. No restart required.

Repaint the spinner with /cc-spinner

The spinner glyph itself is still colored by pi's loader using accent, while the verb text (e.g. Cooking…) follows borderAccent by default so it stays lively without being the exact same color as the glyph. The status suffix (e.g. (thinking · ↓ 10 tokens · 2s)) follows muted. Use /cc-spinner to bind either text element to any other theme color key:

/cc-spinner preview          # list every common theme key with a colored sample
/cc-spinner verb <key>       # change the verb color (e.g. thinkingHigh, mdHeading)
/cc-spinner status <key>     # change the status suffix color
/cc-spinner reset            # restore defaults (verb=borderAccent, status=muted)

The selection is persisted as spinnerVerbColor / spinnerStatusColor in ~/.pi/settings.json and applied on the next spinner tick.

Tool background modes

| Value | Behavior | |-------|----------| | default | Standard Pi tool backgrounds | | transparent | Transparent tool backgrounds | | border / outlines | Legacy aliases for transparent |

Output modes

| Setting | Values | Default | |---------|--------|---------| | readOutputMode | hidden, summary, preview | preview | | searchOutputMode | hidden, count, preview | preview | | mcpOutputMode | hidden, summary, preview | preview | | bashOutputMode | opencode, summary, preview | opencode |

Search tool registration

By default, this extension registers Pi-compatible grep and find tools unless pi-fff is configured with fff-mode=override or PI_FFF_MODE=override. In that mode, pi-fff owns the global grep / find tool names and this extension skips those registrations to avoid extension conflicts.

Set registerSearchTools in .pi/settings.json or ~/.pi/settings.json when you need to force the behavior:

{
  "registerSearchTools": false
}

Use false when another extension provides grep / find. Use true only when you explicitly want this extension to register those tools.

Numeric settings

| Setting | Default | Description | |---------|---------|-------------| | previewLines | 8 | Lines shown in collapsed preview mode | | expandedPreviewMaxLines | 4000 | Max lines when fully expanded | | bashCollapsedLines | 10 | Lines for collapsed bash output | | liveToolPreview | true | Show a small live output preview while tools are still running | | liveToolPreviewLines | 5 | Lines shown in the collapsed live preview | | diffCollapsedLines | 24 | Diff lines before collapsing |

Notes

This package targets recent Pi versions where tool renderers use:

  • renderCall(args, theme, context)
  • renderResult(result, { expanded, isPartial }, theme, context)

Unknown/custom tools do not have a public global renderer hook in Pi, so this package patches container rendering to keep custom tool rows visually consistent with the built-in transparent rendering.

Credits

This project builds upon and was inspired by the excellent work of: