← All Posts

A Workspace That Maintains Itself

Work

Everything I have described in this series, memory, skills, agents, session history, shares one failure mode. It decays if a human has to remember to maintain it. Skills break when a dependency changes and nobody notices until the next time one is needed. Context goes stale. The machine fills up with the residue of last week's work. So the workspace runs a set of background tasks, some on folder-open and some on a throttled cadence, and the difference between a tool I use and an environment I live in turns out to be who does the upkeep.

The Four Tasks

TaskWhen it runsWhat it prevents
Resource guardContinuouslyWatchers and agents piling up until the machine crawls; it watches memory and steps in before that
Skill watcherWhen any skill file changesA broken skill discovered at the moment it is needed; it runs smoke tests on change so the break is caught immediately
Scheduled maintenanceNightlyStale context; it runs quality checks, refreshes context from mail and chat, and pulls repositories so work starts from the latest source of truth
Throttled context captureA few times a dayTransient data that is retained only a few days expiring unread; it pulls it before it expires, extracts action items, and classifies them

None of these is clever. Each one is a chore that used to be mine, written down once with a trigger and a pass or fail check, which is exactly the definition of a tool from the operating principles: do something twice and it becomes one.

The Watcher Matters Most

A skill is code you do not run until you need it. That is its strength, since a library of dozens costs almost nothing to carry, and its weakness, since a broken skill is invisible until the worst moment. The skill watcher removes the gap. The instant a skill file changes, a smoke test runs against it: is the front matter intact, are the triggers still there, are the steps still numbered, are the checks still present, did a placeholder sneak back in. If it fails, I know now, not at the moment I am relying on it in front of someone.

The same test runs nightly over the whole library, because a skill can break without changing, when something it depends on moves underneath it.

I Owe and Owed to Me

The context-capture task deserves its own sentence, because it is the one people ask about. It pulls transient material, the kind of thing that a chat tool or a mail system keeps for a few days and then discards, extracts the action items from it, and sorts them into two lists: what I owe, and what is owed to me. Everyone keeps the first list. Almost nobody keeps the second, which is why commitments made to you quietly evaporate. A machine that reads the expiring material before it expires keeps both.

Take It

The watcher's test is the piece that transfers cleanest, so that is the download: skill-smoke.js. Point it at a folder of skills and it checks each one against the shape from the skill template.

CheckWhy it is there
Front matter with name, description, and use_when triggersWithout triggers the skill can never be selected; without a description the dispatcher cannot match it
Name matches the folderA renamed folder with a stale name is a skill that loads under the wrong identity
Required inputs, numbered steps, pass or fail checks all presentThe three sections that make a skill a procedure instead of a note
No template placeholders, no TBD or TODOA half-finished skill is worse than none, because it is trusted
Warns on "as appropriate," "as needed," "consider"Each one is a decision pushed into the model's judgment instead of the skill

It exits zero when every skill passes and one otherwise, so it drops into any file watcher and any nightly job without ceremony. That is the whole point of this layer: the environment maintains itself, and I stop babysitting it. The principles that tie the five layers together get their own post in a few weeks.

This is part of a track on agent tooling and spec-driven development that goes deeper than a field report, with something you can download and run in each one. Free for now while the track grows; the deepest installments become a paid tier later.

0 Comments