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

pi-declaw

v0.4.0

Published

Rewrite completed Pi answers into clearer readings without changing the original conversation.

Readme

CI Coverage GitHub Pages License Stars Forks

Agent-summary slop is annoying enough. The buzzwords, fake certainty, and excessive polish make it harder to tell what matters.

There are good tools for cleaning it up: Paseo Plain, Speak Like You Eat, ASD-STE100, I Have ADHD, Squirrel Mode, and others.

Used as ordinary prompts or skills, though, these styles can bleed into the rest of the conversation. That can change how the agent reads your requests and writes its next answer.

Paseo Plain was the inspiration for Declaw. It does this as a plugin for Paseo; Declaw takes the idea one step lower in the chain and implements it directly in Pi. One isolated, tool-free model request transforms the most recent response into a display-only reading. The original conversation stays untouched, while the same boundary supports Paseo Plain, the other styles above, and third-party plugins.

Try the hosted playground · Install Declaw

Install

Install the package from npm:

pi install npm:pi-declaw

For the source repository instead:

pi install git:github.com/jzlosman/declaw

Then run /reload in Pi and use /declaw.

Use

/declaw              Rewrite the latest completed answer with your saved style.
/declaw <text>       Rewrite typed or pasted text with your saved style and model.
/declaw style        Choose and save a style (alias: /declaw styles).
/declaw <style-id>    Rewrite the latest answer once with an installed style.
/declaw <style-id> <text>  Rewrite supplied text once with an installed style.
/declaw model        Choose the separate rewrite model.
/declaw list         List installed styles/plugins and active status.
/declaw manage       Enable or disable a style plugin.

Management commands require an exact match, ignoring surrounding whitespace: /declaw list these items rewrites “list these items” rather than listing plugins. An installed style ID can stand alone or prefix supplied text. For example, /declaw pirate/pirate Ahoy there uses Pirate for that rewrite without changing your saved style (requires the Pirate plugin). Unknown prefixes remain part of the source text. Disabled style IDs remain reserved and report that the style is unavailable.

Supplied text needs no prior assistant answer. Declaw passes the text received from Pi to the plugin without trimming it, up to 32,000 characters. When a style prefix is present, Declaw removes the ID and one whitespace separator (CRLF counts as one), preserving any remaining source indentation and line breaks. Pi itself trims outer whitespace on submission; internal spacing and line breaks survive. Declaw does not add the source or reading to future agent context. Empty or whitespace-only arguments use the latest completed answer, including after a style ID.

Examples:

/declaw slye
/declaw The service uses a retry interval of 25 seconds.
/declaw terse The service uses a retry interval of 25 seconds.

Press Esc to cancel. Declaw never rewrites automatically.

Styles

| ID | Style | Source | | ---------- | ------------------ | ----------------------------------------------------------------------------- | | plain | Paseo Plain | scowalt/paseo-plain | | terse | Terse | Local preset | | adhd | I Have ADHD | ayghri/i-have-adhd | | squirrel | Squirrel Mode | thgMatajs/squirrel-mode | | ste | ASD-STE100 | danyuchn/asd-ste100-skill | | slye | Speak Like You Eat | wtfzambo/speak-like-you-eat |

All six styles come with Declaw. You can install more as separate Pi packages or build your own with PLUGIN_GUIDE.md, which includes instructions for coding agents.

Some styles borrow rules from the originals rather than porting them in full. Attribution doesn't imply endorsement or certification.

Plugin architecture

Declaw sends the original answer through the selected style in one model call. Plugins define the transformation and its input format. Host guidance offers defaults, not an overriding policy: plugins may simplify, reorganize, omit, or add content. The result is display-only and never enters the main agent's context.

Plugin IDs stay fixed, and each plugin has its own namespace for styles. Declaw rejects ID collisions and saves your enable/disable choices separately from plugin code. Disabled plugins still appear in /declaw list, but you can't pick them in /declaw style.

The declaw-style-pirate example is a small, working third-party plugin. For the internals, see ARCHITECTURE.md and GLOSSARY.md.

Your style, your transformation

Styles choose what to do with the answer. Declaw does not mask technical text, judge semantic fidelity, or run a second editor pass. A plugin can intentionally change content without being rejected for disagreeing with the host's preferences.

The original conversation stays untouched. Empty, oversized, incomplete, and unchanged results are not added as new readings; cancellation and stale results are also discarded.

Context isolation, privacy, and limits

Rewrites are for you to read. The agent never gets them as context for future prompts, tool planning, skill or prompt evaluation, or session compaction, so the new wording can't influence its later work. Pi saves rewrites as display-only session entries; they're still visible after reload.

The model receives the original answer through the plugin's input formatter, not conversation history, earlier requests, project files, tools, or main-agent reasoning.

Declaw has its own model and style settings. Your main agent's model and thinking level stay unchanged. The default rewrite model is:

openai-codex/gpt-5.6-luna · low thinking

You need to be signed in to the selected provider, and provider charges apply. Each rewrite uses one call with fresh authentication resolution. The operation has a 60-second deadline, with provider retries disabled.

Declaw requires Pi's terminal UI and handles one rewrite at a time. It won't rewrite incomplete answers, tool-call results, or answers over 32,000 characters.

Playground

The hosted playground shows saved rewrites. It makes no model calls in your browser and collects no credentials or analytics.

npm run build:playground
open dist/playground/index.html

The playground includes all six built-in styles, including Speak Like You Eat: four synthetic inputs and 24 historical single-pass outputs from policy 8. Each output retains its model, run, and prompt provenance. These historical recordings use earlier prompts and protection rules, not the current runtime policy.

The private lab for generating and reviewing examples lives outside this repository. See SOURCES.md for pinned source versions, licenses, and adaptations.

Development

npm test
npm run coverage
npm run build:playground

Tests use synthetic answers and fake model responses, with no live model calls. GEPA experiments live in a separate private development lab. GEPA and Python are not extension dependencies, installation steps, runtime services, or release requirements.

The active GitHub Pages workflow, .github/workflows/pages.yml, builds only dist/playground/ from jzlosman/declaw and publishes to jzlosman.github.io/declaw.

License

Declaw is Apache-2.0. Third-party prompts and rules retain their original licenses. See LICENSE, NOTICE, the source-specific upstream/ directories under src/plugins/built-in/, and licenses/.