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-no-autowrite

v1.0.3

Published

Pi extension: intercept auto-write/edit, education & supervisor modes

Readme

pi-no-autowrite

Pi extension: intercepts write/edit tool calls with two modes.

⚠️ Personal-use plugin. Published solely for multi-device sync and npm publishing experimentation. No guarantees of generality.

English | 中文


🇬🇧 English

Installation

pi install npm:pi-no-autowrite

Two Modes

| | education | supervisor | |---|---|---| | write/edit | Hard block, returns guidance for AI to teach you to hand-write | Allows, only shows a hint suggesting delegation to sub-agent | | system prompt | Unchanged | Injects supervisor instructions, telling AI it's a supervisor not an implementer | | mindset | You want to write code yourself, AI as teacher | You want AI to do the work but don't want context polluted by large code output |

Core difference: whether tool calls are actually blocked. Education blocks. Supervisor always allows — it only shifts AI behavior through system prompt injection.

Commands

/no-autowrite                  Toggle on/off
/no-autowrite mode <name>      Switch mode (education|supervisor), auto-enables
/no-autowrite on               Enable
/no-autowrite off              Disable
/no-autowrite status           Show status
/no-autowrite show             Show interception rules for current mode

Technical Implementation

Three core mechanisms:

1. tool_call hook — intercept write/edit

Registers pi.on("tool_call"), matching toolName === "write" || "edit".

  • education: returns { block: true, reason: "..." }, blocking the call and instructing AI to guide the user instead
  • supervisor: shows a notify hint then returns undefined, allowing the call

2. before_agent_start hook — inject system prompt

Active only in supervisor mode. Before AI starts, appends supervisor role definition to event.systemPrompt:

  • Role: supervisor, not implementer
  • Rules: heavy coding → delegate via Agent tool + run_in_background: true
  • Light tasks (TODOs, comments, config, short snippets) → write/edit directly
  • Use get_subagent_result to retrieve results and report back

This nudges AI toward delegation rather than direct implementation — but it's non-enforcing, just a soft prompt-level steer.

3. session entry — state persistence

Toggle state and mode are persisted via pi.appendEntry("no-autowrite-state", { mode, enabled }) into the session file, restored from the most recent entry on next startup. State survives project switches.

Motivation

Two conflicting needs when using pi daily:

  • Sometimes you want to write code yourself — AI should only explain, not touch files
  • Sometimes you want AI to go all out — but don't want the main session context flooded with code output

This plugin is the quick toggle between those two modes.

License

MIT


🇨🇳 中文

安装

pi install npm:pi-no-autowrite

两种模式

| | education | supervisor | |---|---|---| | write/edit | 硬拦截,返回引导信息让 AI 教你手写 | 放行,仅弹提示建议委托子 agent | | system prompt | 不改 | 注入 supervisor 行为指引,告诉 AI 它是监督者不是执行者 | | 适用心态 | 想自己写代码,AI 当老师 | 想让 AI 干活但不想 context 被大段代码污染 |

两者本质区别:是否真的阻止工具调用。education 直接 block,supervisor 永远放行——只是通过 system prompt 改变 AI 的行为倾向。

命令

/no-autowrite                  切换开关
/no-autowrite mode <name>      切换模式(education|supervisor),自动启用
/no-autowrite on               启用
/no-autowrite off              关闭
/no-autowrite status           查看状态
/no-autowrite show             查看当前拦截规则

技术实现

三个核心机制:

1. tool_call hook — 拦截 write/edit

注册 pi.on("tool_call"),匹配 toolName === "write" || "edit"

  • education:返回 { block: true, reason: "..." },阻止本次调用,并提示 AI 改为指导用户
  • supervisor:弹出 notify 提醒后返回 undefined,放行

2. before_agent_start hook — 注入 system prompt

仅 supervisor 模式生效。在 AI 启动前,向 event.systemPrompt 尾部追加 supervisor 角色定义:

  • 角色:supervisor(监督者),不是 implementer
  • 规则:繁重编码用 Agent tool + run_in_background: true 委托给后台子 agent
  • 小东西(TODO、注释、配置、简短片段)可直接 write/edit
  • get_subagent_result 取回结果后汇报

这让 AI 在行为上更倾向委托而非亲自写——但不强制,只是一个 prompt 层面的软引导。

3. session entry — 状态持久化

开关状态和当前模式通过 pi.appendEntry("no-autowrite-state", { mode, enabled }) 写入 session,下次启动时从最近的 entry 恢复。切换项目后状态不丢失。

开发动机

日常使用 pi 时有两种矛盾需求:

  • 有时想自己动手写代码,希望 AI 只解释思路不动文件
  • 有时想让 AI 放开了干,但又不想主会话被代码输出撑爆 context

这个插件就是在这两种需求间切换的快捷键。

License

MIT