pi-declaw
v0.4.0
Published
Rewrite completed Pi answers into clearer readings without changing the original conversation.
Maintainers
Readme
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-declawFor the source repository instead:
pi install git:github.com/jzlosman/declawThen 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 thinkingYou 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.htmlThe 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:playgroundTests 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/.
