Skip to content

v0.26.0

Choose a tag to compare

@github-actions github-actions released this 25 Sep 19:46
799e532

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:

  • init writes .floppy/config and nothing else. Your repository carries
    data, not code. Its refusal when the plugin had no shim/run is gone with
    the copy it guarded.
  • skills/init/SKILL.md drops its hand copy of the plugin search — 33
    lines that existed because init ran before .floppy/run existed. The test
    that executed that fenced block (tests/test-init-bootstrap.sh) goes with
    it. Prose cannot be executed, so tests/test-skills.sh resolves 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>/run and "one directory above" passing.
  • shim/run still ships, byte for byte. It is what a pre-0.26.0 consumer
    calls, and it cmps 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/run

In 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.