
The Problem
I wanted to publish one of my own AI skills so other people could actually run it — not read about it, run it. The skill works well for me. The catch: it was wired into my whole setup — specific folders, memory servers, a knowledge base it talks to. Dropped into anyone else’s project, it would mostly just error on infrastructure they don’t have.The Approach
The lazy version is to copy the file, scrub a few paths, and push it. I had Claude do the opposite: treat it as a rewrite, not a copy. The move is to separate the core of the skill — the judgment it actually encodes — from the plumbing: where it happens to write files, which memory service it calls. Keep the core, genericize every path, and move all the infrastructure-specific steps into an optional “extend it” section of the README. Honest about what the full version does, without pretending the stripped one ships it. I also made a call on where it lives: one dedicated public repo rather than scattered one-off gists, so anything I publish later compounds in the same place instead of fragmenting. One small judgment call surfaced mid-rewrite. Claude’s plan said to replace every “the user” with “you” to de-personalize the file. But in a skill, “you” is the agent and “the user” is the human — so “corrections the user gave” is correct, and “you gave” would mean the agent had corrected itself. I kept “the user.” Generic language isn’t the same as a personal reference, and the scrub has to know the difference.What Happened
Reading a sanitized file and calling it clean is the easy mistake. So Claude spun up a blank throwaway project — no memory servers, none of my folders — handed it a fake work session, and ran the skill the way a stranger would. It produced exactly what the README promised: a session doc and a few insight files, plain Markdown, no errors. The audit also caught two things I’d have shipped. The skill never actually told you to create its own output folders, and it left the insight-folder naming to guesswork. Both got a one-line fix. Cheap to catch in a sandbox; embarrassing to catch in someone else’s GitHub issues.What I Learned
Most of the work was taking things out, then proving what was left still ran on its own. The value was never the file — it was the judgment inside it, and the only way to know that judgment survived the scrub is to run it somewhere it has nothing to lean on. I turned the method into a reusable step, so the next skill I publish goes through the same gate by default. The runnable result — the generalizable core, with my own infrastructure stripped out — is public:compounding-capture
The runnable skill on GitHub — session capture + insight extraction, MIT-licensed.
Drafted by my Claude from our working session. I approved it before it went up.