# Agents that keep their own notes, and old packages released again

> A month of plugins, skills and package releases

Published 2026-10-04 (America/New_York). Tags: AI, Claude Code, agent skills, NPM, NuGet, software-development. Canonical: https://www.markdavidrogers.com/agents-that-keep-their-own-notes/. AI: generated.

Most of what I've built since late August comes from one annoyance. A coding agent learns something on Monday (a port, a quirk in a build tool, why a test fails on Windows) and on Tuesday a fresh session learns it all over again. Everything below is an attempt to make that stop, or a side effect of trying.

## Write it down where any tool can read it

[Everlast](https://github.com/m4bwav/everlast) gives each project an `ai-docs/` folder: a short handoff, an append-only log, decisions, dead ends and plans. Facts about me and my machines go in a private vault instead of a repository. The record lives on disk as plain markdown. A session in Claude Code, Copilot or Codex can pick up the work from it without relying on any one tool's memory. It reached 0.6.1 today.

[Evergreen](https://github.com/m4bwav/evergreen-protocol) is the same idea applied to skills. An agent skill is a set of instructions, and instructions about fast-moving tools go stale. An evergreen skill carries its research notes, a changelog, a learnings file and an eval suite, plus a schedule for checking its claims against primary sources again. Version 0.15.0 (October 2) added setup checks, so a skill can say what it needs (a tool, an API key, a local server, access to a database) and walk you through getting it.

Two smaller helpers came out of running a lot of skills at once. [context-health](https://github.com/m4bwav/context-health) warns when a session's context has grown large enough to make the model worse, in Claude Code, Copilot CLI, VS Code, Codex, Gemini CLI and Cursor. [skill-tidy](https://github.com/m4bwav/skill-tidy) lints skill descriptions, finds the ones that collide and trims what the catalog costs in tokens.

I read most of this output in Obsidian, so [obsidian-notes](https://github.com/m4bwav/obsidian-notes) lints and indexes AI-written markdown until it works as a vault and still renders on GitHub.

## Skills for specific jobs

Once the maintenance layer existed, building narrow skills on top of it got cheap:

- [chartwright](https://github.com/m4bwav/chartwright) picks and builds a chart from a knowledge base of about 80 chart types, rendered for wherever it will be read (Markdown, a web page, PNG, PowerPoint, the terminal).
- [threewright](https://github.com/m4bwav/threewright) is three.js knowledge and a command-line checker, so an agent can prove a scene renders the way it claims. The 3D hero on this site's front page was checked with it.
- [unity-agent](https://github.com/m4bwav/unity-agent) has five skills for driving Unity from an agent: the new Unity CLI, headless batchmode, MCP bridges, workflow rules and packages.
- [everscout](https://github.com/m4bwav/everscout): name a subject and get a scout for it, with a verified list of communities and feeds, polite scanning, notes and reports.
- [readwright](https://github.com/m4bwav/readwright) reads ebooks and documents a section at a time (outline first, then only the chapters needed) so a whole book doesn't land in the context at once.
- [wikiwright](https://github.com/m4bwav/wikiwright) writes a repository's GitHub wiki and checks every code example against the published npm or NuGet package.
- [everwrite](https://github.com/m4bwav/everwrite) makes prose read as if a person wrote it, with a small checker script that counts what's left to fix. This post went through it.

## Old packages, new releases

The biggest test of all this was going back to packages I published between 2010 and 2019 and left alone. [package-modernize](https://github.com/m4bwav/package-modernize) is the skill that came out of it. It surveys the old package, records what the published version does, and writes a decisions table. Then it stops until I approve. After that it rewrites, reviews, cleans up the repository and rehearses the release before anything ships. Releases go out through trusted publishing, so no long-lived registry token sits in the repository.

So far it has rebuilt ten packages:

| Package | Registry | First released | Now |
|---|---|---|---|
| [JsonPrettyPrinter](https://www.nuget.org/packages/JsonPrettyPrinter) | NuGet | 2010 | 3.0.2 |
| [RandomNameGeneratorLibrary](https://www.nuget.org/packages/RandomNameGeneratorLibrary) | NuGet | 2015 | 2.3.0 |
| [TrailerClipper](https://www.nuget.org/packages/TrailerClipper) | NuGet | 2015 | 2.0.0 |
| [get-title-at-url](https://www.npmjs.com/package/get-title-at-url) | npm | 2016 | 3.0.0 |
| [markdown-plain-link-replacer](https://www.npmjs.com/package/markdown-plain-link-replacer) | npm | 2016 | 2.0.0 |
| [stack-exchange-markdown-retriever](https://www.npmjs.com/package/stack-exchange-markdown-retriever) | npm | 2016 | 2.0.0 |
| [replace-string-at-position](https://www.npmjs.com/package/replace-string-at-position) | npm | 2016 | 2.0.0 |
| [is-an-image-url](https://www.npmjs.com/package/is-an-image-url) | npm | 2017 | 2.0.0 |
| [format-json-files](https://www.npmjs.com/package/format-json-files) | npm | 2018 | 2.0.0 |
| [seeded-random-utilities](https://www.npmjs.com/package/seeded-random-utilities) | npm | 2019 | 2.0.1 |

Several of them were the subject of [my 2016 post on making npm packages](https://www.markdavidrogers.com/creating-a-nodejs-package-for-npm). Ten years on, that post's complaint about a dependency whose owner never merged my pull request is moot: the new versions don't need it.

One rule I added along the way is a size budget. I like adding features, but a small library should stay small enough that nobody hesitates to install it. Every package plan now sets green, yellow and red size limits, and CI checks them.

## Something new

The first new library from this setup is [UniverseGenerator](https://github.com/m4bwav/UniverseGenerator), a seeded galaxy and planet generator pulled out of my game SpaceDeckBuilder2. Version 1.0.0 shipped today, and it gets [a post of its own](https://www.markdavidrogers.com/universe-generator-1-0).

---

*Claude wrote this post with the [everwrite](https://github.com/m4bwav/everwrite) plugin, running Opus 5.5 at medium effort.*
