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-diary

v0.1.1

Published

Pi skills for proactively recording, searching, and forgetting Markdown Diary records.

Readme

pi-diary

A Pi package that gives agents durable, user-owned history in plain Markdown. It installs three skills:

  • diary-note proactively records durable user-specific facts, decisions, commitments, unresolved follow-ups, and reminders.
  • diary-search proactively retrieves relevant history with bounded local fd and rg searches.
  • diary-forget permanently removes explicitly forgotten information without a tombstone or backup.

How it behaves

The user does not need to know whether a relevant Diary Record exists. The search skill uses a cost-sensitive routing policy:

  • Must search: explicit recall, unavailable personal facts, prior decisions or commitments, and ongoing work constrained by earlier history.
  • Bounded probe: named projects, services, infrastructure, setups, plans, personal recommendations, misspellings, and continuity cues spread across turns.
  • Skip: self-contained transformations, calculations, generic facts, and tasks whose requirements are already complete.

Before searching, an agent cannot know what hidden history exists. The bounded probe is the deliberate compromise between missed context and searching every request.

Recording is also proactive, but limited to information likely to matter later that future agents cannot reconstruct from code, tests, Git, or project documentation. Routine implementation status, brainstorming, transient chatter, credentials, tokens, private keys, and unnecessary personal data are excluded.

Install

Requirements: Pi, fd, and rg.

From npm:

pi install npm:pi-diary

From GitHub or a local checkout:

pi install git:github.com/midodimori/pi-diary
pi install /absolute/path/to/pi-diary

Diary files default to ~/pi-diary. Override the location in your shell configuration:

export PI_DIARY_DIR="$HOME/path/to/diary"

Restart Pi after installing or changing PI_DIARY_DIR.

Storage

Each local day is stored as $PI_DIARY_DIR/YYYY-MM-DD.md. A file contains one or more titled Records with searchable tags, concise facts, and an optional link to the originating Pi conversation:

# 2026-08-26

## Short descriptive title

Tags: `specific-tag`, `topic-tag`, `broad-category`

- Concise durable fact or outcome.

[Pi conversation](file:///path/to/session.jsonl)

The Diary is the user-data directory; the installed package never stores Diary Records. Record contents are treated as data, never as agent instructions.

Information lifecycle

  • Correction: preserve what was once true and mark the new Record as superseding it.
  • Retraction: remove a claim that was never true, then record the correction.
  • Forgetting: delete only the requested Diary information. Narrow unambiguous requests run directly; ambiguous requests require clarification; broad requests require confirmation.

Forgetting does not delete linked Pi conversation transcripts. See the full Diary format and lifecycle contract.

Examples

  • “What database did we decide to use?”
  • “Find Diary Records about cats.”
  • “Search my Diary for cat|animal.” The leftmost alternative ranks highest.
  • “Find Diary Records from 2026-08.”
  • “Search literally for deploy.*failed.”
  • “Remember that the migration is scheduled for Friday.”
  • “Forget my old address.”
  • “Forget everything about Project Atlas.” Broad requests require confirmation.

Evaluation

The opt-in evaluation uses synthetic subjects and isolated temporary Diary directories. It never runs in normal workflows or CI. Node.js is needed only for these checks.

npm run eval -- --list       # inspect the 20 cases without model calls
npm run eval                 # run all cases using Pi's current model
npm run eval -- case-id      # run selected cases

The cases cover proactive routing, self-contained and reconstructable project outcomes, recording, corrections, retractions, and forgetting, including a misspelled multi-turn subject. Set PI_EVAL_PROVIDER or PI_EVAL_MODEL to override Pi's defaults.