Skip to content

3.0.0: one entry point, one reference

Choose a tag to compare

@sogeisetsu sogeisetsu released this 31 Oct 20:05
· 13 commits to main since this release

Install

Minimal package: opencode-go-model-picker-3.0.0-min.zip contains only what the skill runs — SKILL.md, references/ (one doc plus two dated seeds), scripts/ (one entry point + modules) and LICENSE. Unzip it into ~/.config/opencode/skills/ so the folder is named opencode-go-model-picker. Verify with node scripts/go.mjs --help (four verbs: run / report / check / apply).

Full notes: CHANGELOG.md · 中文:CHANGELOG-ZH.md

[3.0.0] - 2026-11-01

The size of the simplification

3.0.0 is not a feature release: it is the same job described with an order of
magnitude less text
. Measured against the 2.0.0 tag:

What the model must read 2.0.0 3.0.0 Change
Markdown files 7 (SKILL.md + 6 references) 2 (SKILL.md + plan-facts.md) −5 files
Characters 104,181 8,291 12.6× smaller (−92%)
Lines 1,776 168 10.6× fewer (−91%)
Estimated tokens ≈27,400 ≈2,200 ≈25,200 saved per full read
SKILL.md alone 18,804 chars ≈4,900 tok 4,221 chars ≈1,100 tok −78%
Runnable entry points 9 runtime scripts (11 with maintainer tools) 1 (go.mjs) −8 runtime
Minimal install zip 128,802 B 89,163 B −31%

A typical 2.0.0 run loaded SKILL.md plus two or three references (≈11–15k
tokens); the same run now loads 8.3k characters, about 2.2k tokens — roughly
80–85% less context before any work starts. Token figures are estimates at
3.8 characters/token (no tokenizer ships with the repo); character and line counts
are exact: git show v2.0.0:SKILL.md | wc -c and the same for each reference.

Code did not shrink — it moved: ~4,700 lines of scripts became ~5,300 lines of
modules plus tests, because the rules that used to be prose (refresh order, basis
selection, priced columns, chain shape, apply diff) are now enforced by code.

Breaking

  • One entry point. scripts/go.mjs replaces nine scripts — discover-agents,
    probe-console, calibrate-usage, quota-math, refresh-snapshot,
    refresh-prices, refresh-scores, snapshot-summary and fetch-go-models are
    gone. Four verbs: run (agents → Console → usage → refresh → plan diff → basis,
    one serial pass, one run.json), report (table, money columns, config blocks),
    check (the gate before delivery), apply (exact diff; writes only with
    --write, only the named file, only that agent's model value).
  • One reference. references/plan-facts.md replaces quota-math.md,
    model-snapshot.md, data-sources.md, agent-sources.md, console-mcp.md and
    output-format.md. SKILL.md drops from ~19k to ~4k characters and is
    model-facing only; teaching moved to the READMEs.
  • Code over prose. The refresh order (three writers, one snapshot file), the
    Basis: line and its denominator, the priced $/session column, chain-shape
    rules, seed staleness, mode resolution and the apply diff are computed, not
    described. The nine self-checks became go.mjs check.
  • apply refuses a chain containing a dead id and refuses to write a result that
    does not re-parse.

Added

  • node --test tests/*.test.mjs (built-in node:test, no dependencies):
    tests/golden/ holds outputs captured from the 2.0.0 scripts and covers pricing,
    discovery and the five Console states; CLI tests cover offline degradation, the
    report gate, and dry-run versus --write.
  • run --offline always produces a dated, seed-labelled run.json; data.quality
    says live / seed / none instead of leaving the reader to infer it.

Changed

  • scripts/check-docs.mjs and scripts/generate-assets.mjs moved to tools/:
    they maintain the repository, not the skill, and are not part of the minimal
    install.
  • Moved test-prompts.json to tests/prompts.json and documented it in the
    repository layout: it is an evaluation fixture (a request paired with the
    behaviour the skill must exhibit), not a runtime asset — nothing loads it.