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

dsh-diary

v0.1.1

Published

Diary plugin for DeepSeek Harness: daily markdown journal entries, custom templates, and a web settings section

Readme

dsh-diary

A DeepSeek Harness plugin that gives the agent a daily markdown journal: create entries, manage the resulting .md files, use custom templates, and configure it all from a web settings section.

What it adds

Ten model-facing tools, registered on ctx.tools:

| Tool | Purpose | |---|---| | diary_create | Create a new entry (YYYY-MM-DD[-slug].md) with optional title, tags, body, and a named template | | diary_list | List entries with metadata, filterable by year/month, tag, or title/filename substring | | diary_read | Read one entry's frontmatter and full body | | diary_update | Replace or append the body, and/or change the title and tags | | diary_delete | Delete one entry file | | diary_search | Full-text search across entry bodies with line numbers and snippets | | diary_template_list | List the templates available to diary_create | | diary_template_read | Read one template's full content | | diary_template_set | Create or overwrite a template | | diary_template_delete | Delete a template |

Custom templates

Templates are markdown files under <diary-directory>/templates/. diary_create accepts a template name and substitutes these placeholders in the template body:

{{date}} {{title}} {{tags}} {{slug}} {{year}} {{month}} {{day}} {{datetime}} {{time}}

When both template and content are given to diary_create, the rendered template body comes first and content is appended after a blank line.

Web GUI

The plugin ships a browser half (lib/client.js, served at /plugins/dsh-diary/client.js) with two surfaces:

  • a 「日记」settings section: shows the diary/templates directory and lists, creates, edits, and deletes templates;
  • a 日记看板 (diary board): a standalone panel (its own floating toggle button, 📓) that lists entries grouped by month, with a 「新建日记」 button and a per-entry delete action.

Both are backed by a diary Typert Remote namespace exposed under /api/diary/*: getDirectory, listTemplates, getTemplate, setTemplate, deleteTemplate, listEntries, getEntry, createEntry, deleteEntry.

Storage

Entries are markdown files with optional YAML frontmatter:

---
title: My day
date: 2026-08-14
tags:
  - work
  - life
---

Today I …

By default they live under $DSH_HOME/diaries (falling back to ~/.dsh/diaries). Override the directory in the profile's cordis.patch.yml:

- insert:
    - id: dsh-diary
      name: 'dsh-diary'
      config:
        directory: '/Users/me/Diary'

One entry per date is the default; pass a slug to diary_create to keep several entries on the same day (the file becomes YYYY-MM-DD-<slug>.md).

Install

Install the published dsh-diary package into the web profile:

dsh plugin --profile web add dsh-diary

Then restart the web server for the new layer (tools + settings section) to take effect.

Develop

pnpm install      # links @deepseek-ai/* host + client packages for typecheck
pnpm run build    # esbuild → lib/index.js (host) + lib/client.js (browser) + declarations
pnpm run typecheck
node smoke.mjs    # functional smoke test of the ten tools