Repository navigation
v0.26.0
Refresh .floppy/run: no — there is nothing left to refresh. A repository
that already carries a copy keeps working; a repository created from here on
never gets one.
The runner leaves your repository
Every init before this release copied shim/run into the consumer as
.floppy/run, and every skill, document and status note named that path. The
copy existed for one reason: a skill had no way to say where the plugin was, so
something inside the repository had to search for it.
It does have a way. A harness states the skill's own base directory above the
skill text — Base directory for this skill: <plugin>/skills/workstatus — and
the plugin directory is two levels above that (measured in Claude Code on
2026-09-22, on this plugin and one other). So the skills now call
bash <plugin>/scripts/run <verb> directly, and scripts/run derives
FLOPPY_ROOT from its own ${BASH_SOURCE[0]} instead of being handed it. A
direct call needs no floppy variable at all: bash <plugin>/scripts/run status
runs with nothing set but HOME, which the config parser has always read.
What follows from that:
initwrites.floppy/configand nothing else. Your repository carries
data, not code. Its refusal when the plugin had noshim/runis gone with
the copy it guarded.skills/init/SKILL.mddrops its hand copy of the plugin search — 33
lines that existed becauseinitran before.floppy/runexisted. The test
that executed that fenced block (tests/test-init-bootstrap.sh) goes with
it. Prose cannot be executed, sotests/test-skills.shresolves it instead:
no skill names.floppy/run, a skill using<plugin>says where it comes
from and how far above the base directory it sits, and every<plugin>/…
path a skill names has to exist in this checkout. The last two were added
after a review showed<plugin>/runand "one directory above" passing.shim/runstill ships, byte for byte. It is what a pre-0.26.0 consumer
calls, and itcmps itself against the plugin's copy — so any edit here
would tell every one of those repositories that their copy is stale. It is
deliberately left untouched.
Migrating a repository you already have
Nothing breaks if you do nothing: .floppy/run still finds the plugin and
still runs the verb. Nothing in the plugin calls it any more, so when you want
it gone:
git rm .floppy/runIn the same commit, correct the line in AGENTS.md that names .floppy/run as
the entry point — the verbs are run from the plugin now:
bash <plugin>/scripts/run <verb>, where <plugin> is two directories above
the base directory the harness states. A later init prints a reminder when it
sees the old line, and prints one more when it finds the leftover file.
The command a human typed
There isn't one, and that is the measurement: the operator of the six
repositories that use floppy reports never having typed .floppy/run by hand.
The surface is dropped rather than replaced; no AI_FLOPPY_HOME recipe and no
cache path with a version in its last segment is invented to stand in for it.