feat(card): a folder shows every bundle under it, as the server does

`okf card <folder>` prints `okf_list` and `okf_describe` with no bundle
named, joined by `mcp_server.overview`, and computes nothing of its own:
one source, two doors. Chosen over a separate `--root` flag because the
skill's first step must be the same command whether it was pointed at a
bundle or at a folder of them; the rule that decides is discovery's own
(a directory carrying an `index.md` is a bundle). A bundle path prints its
card as before.

v1.1 order F, part F1.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Kjell Tore Guttormsen 2026-09-21 10:28:32 +02:00
commit df83c65e32
5 changed files with 212 additions and 4 deletions

View file

@ -1397,6 +1397,21 @@ sub-questions in. The lines are capped at 48 000 bytes together
(`lines_truncated` counts what a larger bundle leaves out), and a line lists at
most 24 titles. The map replaced the card's flat `source_files` list.
**Point it at a folder and it sees every bundle under it** (since v1.1 F):
```sh
okf card ~/okf # every bundle under the folder, each with its card
```
It prints what the server's `okf_list` and `okf_describe` give with no bundle
named -- the listing (id, ref, concept count, directory), the directories that
look like a bundle and cannot be read as one, and every bundle's card -- and it
computes nothing of its own: the command calls the server's two functions. A
bundle added or rebuilt under the folder is in the next run's answer with
nothing regenerated. Pointed at one bundle, it prints that bundle's card as
before; the command decides which it was given by the same rule discovery uses
(a directory carrying an `index.md` is a bundle).
`okf skill <bundle> --for-bundle` still writes the per-bundle form, with the
identity and the numbers measured into the text — which is exactly what makes
that file stale the moment the bundle is rebuilt. It refuses out loud when it