pi-cc-style-tools

Claude Code-style rendering for Pi's built-in read/bash/write/edit tools — status dots (gray/green/red), white assistant circle, multi-hunk diffs for Update. Rendering only, zero behavior changes.

Packages

Package details

extension

Install pi-cc-style-tools from npm and Pi will load the resources declared by the package manifest.

$ pi install npm:pi-cc-style-tools
Package
pi-cc-style-tools
Version
1.1.0
Published
Aug 27, 2026
Downloads
147/mo · 147/wk
Author
laijay
License
MIT
Types
extension
Size
26.9 KB
Dependencies
0 dependencies · 2 peers
Pi manifest JSON
{
  "extensions": [
    "./index.ts"
  ]
}

Security note

Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.

README

pi-cc-style-tools

Claude Code-style rendering for the Pi coding agent's built-in read / bash / write / edit tools.

Rendering only. Every override delegates execute() to the original tool, so behavior, permissions, hooks and command rewriting (e.g. RTK) are untouched. No file I/O happens in any renderer, so streaming and expansion stay smooth.

● Bash(pnpm build)
  ⎿ done (12 lines)
    line1
    line2
    … +10 more (ctrl+o to expand)

● Read(src/index.ts)
  ⎿ Read 52 lines

● Write(src/foo.ts)
  ⎿ Written

● Update(src/bar.ts)
  ⎿ Updated with +12 −3
  ⎿ 12-18
       12  const a = 1;
    -  13  const b = 2;   ← red
    +  13  const c = 2;   ← green + bold
       14  const d = 3;
  ⎿ 100-110
     …

Pi's edit tool is labeled Update, matching Claude Code.

Style rules

  • Capitalized tool namesBash(), Read(), Write(), Update().
  • Status dots — gray while running, green when done, red on error.
  • Assistant messages get a leading white circle (), like Claude Code.
  • Update() shows every diff hunk — if a file has changes at lines 10-20 and 100-110, both regions render as their own block. Hunks are never folded into a single collapsed region.
  • Deleted lines are red; added lines are bright green and bold for strong contrast; context lines are gray.
  • Only Update() shows a diff — Bash/Read/Write never do.

Expansion (ctrl+o)

ctrl+o globally collapses/expands all tool outputs (pi's built-in app.tools.expand binding):

Tool Collapsed (default) Expanded (ctrl+o)
Bash up to 20 lines, with … +N more (ctrl+o to expand) hint full output (capped at 500 lines)
Read ⎿ Read N lines same — Read stays a one-line summary
Write ⎿ Written same — Write stays a one-line summary
Update all diff hunks (always visible) same — hunks never fold

Install

From npm:

pi install npm:pi-cc-style-tools

Or from GitHub:

pi install git:github.com/newCman1/pi-cc-style-tools

Or try it without installing:

pi -e npm:pi-cc-style-tools

If you previously copied index.ts into ~/.pi/agent/extensions/, remove it first to avoid double tool registration.

Configuration

All styling lives in the STYLE constant at the top of index.ts:

Key Default Meaning
dot tool-call bullet ( U+2B24 is bigger, if your font has it)
dotGap " " gap between bullet and tool name
collapsedOutputLines 2 output lines shown when collapsed
collapsedOutputLines 20 default bash preview: at most this many lines
maxExpandedOutputLines 500 safety cap when ctrl+o expands bash output
maxHunks 20 safety cap: at most this many diff hunks per Update
maxDiffLineLen 200 truncate over-long diff lines
colors.dot success bullet color when done
colors.pendingDot muted bullet color while running (gray)
colors.errDot error bullet color on failure (red)

Colors use your active Pi theme tokens, so the look follows light/dark themes.

Requirements

  • Pi running in interactive (TUI) mode.
  • On startup Pi shows a one-time "overriding built-in tool" notice — expected, since this package replaces the renderers of those tools.

Development

npm install
npm run typecheck   # type-check index.ts
npm test            # unit tests for the assistant-message dot transformer

The assistant white-circle logic lives in markdown.ts as a pure, pi-independent function so it can be unit-tested without a TUI. Tests cover message-type filtering (thinking/user untouched), the streaming code-fence flicker fix, inline-code handling, and prefix non-accumulation.

License

MIT — see LICENSE.