chore(release): prepare v0.18.0 - version bump, and the entry point --focus was missing

release-plugin.mjs does not bump these; it REFUSES to release until they
already match the target (release-plugin.mjs:64). The bump belongs in this
repo, not in the catalog session, so the catalog step is now unblocked:
plugin.json, package.json, README badge and all three SKILL.md frontmatters
move to 0.18.0 together, and CHANGELOG's [Unreleased] becomes [0.18.0].

More important than the numbers: --focus was reachable by nobody. The board
SKILL.md is the operator's only entry point and it documented only --plan, so
"fokusdag pa X" would have routed to an unfocused plan on a released 0.18.0.
The skill now passes the user's phrasing through VERBATIM - resolving prose to
a slug in the skill would put a guess in front of a deterministic lookup, and
fokus= already reports what the phrase resolved to. It also relays the three
disclosure lines rather than trimming them as noise, since this is the one
rendering that hides repos.

check-versions: 0 ERROR, 1 WARN (catalog ref lags plugin.json - the documented
transient state before the ref bump).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0186vKCzuUEN5WcJB82kddzF
This commit is contained in:
Kjell Tore Guttormsen 2026-08-02 20:15:52 +02:00
commit ecbb34ae48
7 changed files with 45 additions and 10 deletions

View file

@ -9,15 +9,18 @@ description: >-
"what unblocks the most", "show the board", "what is cheapest to move",
"cross-repo status", "where is the leverage", "which repo is blocked". Also
covers planning a whole day rather than picking one repo: "plan my day", "which
repos should I open tabs for", "day plan". Also triggers on Norwegian phrasings:
repos should I open tabs for", "day plan" — including a day with a subject:
"focus day on X", "today I am only working on X", "which repos does X touch".
Also triggers on Norwegian phrasings:
"hva skal jeg jobbe med", "hvem venter på meg", "hva løsner mest", "vis tavlen",
"hva er billigst å flytte", "hvor bør jeg begynne", "status på tvers av repo",
"hva er blokkert", "lag en dagsplan", "planlegg dagen", "hvilke repo skal jeg
åpne i dag". Trigger even when the
åpne i dag", "fokusdag på X", "i dag jobber jeg bare med X", "hvilke repo
gjelder X". Trigger even when the
user names no repo and no tool — choosing *between* repos is this skill. Not for
"where were we" inside the current repo: that is this repo's own STATE.md,
already injected at session start.
version: "0.17.0"
version: "0.18.0"
---
# board — which repo deserves the next session
@ -151,6 +154,36 @@ Two things to say out loud when you hand it over:
per tab. Fixing them is the `route` skill's job, in *that* repo — never a side
quest here.
### When the day has a subject ("fokusdag")
"I dag jobber jeg bare med X", "fokusdag på X", "hvilke repo gjelder X" — pass the
user's own words through, untouched:
"$BOARD" --plan --focus "<the user's phrasing, verbatim>"
**Do not tokenize, normalize or translate the phrase into a slug yourself.** The
engine resolves prose against the topic markers the scanned `STATE.md` files
actually declare, and it reports what it resolved to. Guessing a slug here would
put a judgement call in front of a lookup that is already deterministic — and
`fokus=` in the output tells the user what the phrase resolved to, which your
guess would silently replace.
This is the only rendering that *hides* repos, so three lines carry weight and
must be relayed, never trimmed as noise:
- **`fokus_utenfor=`** — repos that *mention* the subject with no marker line.
They are named, not counted, because that is where the misses live: a repo can
be a heavy participant and still never have written a marker. Say "nevner",
never "dekker" — this reports text found in a file, not relevance.
- **`fokus_droppet=`** — how many blocks the cutoff removed.
- **`fokus_rekkevidde=`** — how many `STATE.md` were searched. The scan opens no
other file, so a repo whose evidence lives in a `README` is invisible to it.
If `fokus_ikke_brukt=` appears, the phrase matched no declared subject and the
**full** plan came back. Say so plainly — the user asked for a narrow day and got
a wide one, and presenting it as focused would be the one failure this whole
rendering is built to avoid.
Blocks are `key=value` and comment lines start with `#`, because a separate driver
repo consumes this output. That format is a contract with a consumer outside this
repo: never reformat it, and never hand-edit a block before passing it on.

View file

@ -15,7 +15,7 @@ description: >-
covers retiring a broadcast that has become wrong or obsolete: "retract that
broadcast", "that announcement is outdated, pull it", "trekk tilbake kringkastingen",
"den broadcasten er utdatert".
version: "0.17.0"
version: "0.18.0"
---
# coord-send — natural-language front door for inter-repo messages

View file

@ -14,7 +14,7 @@ description: >-
the operator names no model and no tool — choosing the model for the next
session IS this skill. Not for choosing which REPO gets the next session:
that is the `board` skill.
version: "0.17.0"
version: "0.18.0"
---
# route — what the next session should run with