We Taught an AI Skill Router When Not to Speak: Unlimited Skills 0.6.6

Multilingual signals routed to one selected skill through a guarded local runtime

An AI agent does not get better just because you give it more instructions. At some point, more capability becomes more noise. The agent sees too many skills, chooses on weak evidence, and spends context on procedures that never needed to be loaded.

That is the problem Unlimited Skills is built to solve: search a large local library, select the procedure that fits the task, and load only what is useful. In 0.6.6, we went after the harder half of that promise. The router now has to know not only what might be relevant, but when the evidence is too weak to speak.

Unlimited Skills 0.6.6 is live on PyPI. It is a precision and release-reliability update, not a feature-count release.

One score was doing three different jobs

The old routing path had one uncomfortable ambiguity. A search result could mean three very different things:

  • this item appeared somewhere in raw retrieval;
  • this skill name is safe to show the model as a possible lead;
  • the evidence is strong enough to inject the skill body into the model context.

Those are not the same decision. A weak overlap can be useful diagnostic evidence without being a safe recommendation. A plausible skill name can help an agent recover without justifying the much stronger action of loading its full instructions.

Version 0.6.6 separates those surfaces. Raw candidates remain available for diagnostics. Recall-safe hints have their own qualification rules. Skill-card injection requires stricter lexical identity and a confidence margin. A body-only overlap does not qualify, and rank fusion can improve ordering without being treated as proof.

The user-visible result is deliberately quiet: fewer wrong cards, fewer irrelevant instructions entering the context window, and explicit recovery guidance when the router is uncertain.

Multilingual routing needed semantic rescue, not optimistic guessing

Unlimited Skills descriptions are predominantly English. A Russian, Arabic, or mixed-language task can be semantically obvious to a multilingual embedding model while looking almost empty to a lexical matcher. The dangerous workaround is to accept any weak English token that happens to overlap. A prompt containing a technical word such as Python or API could then surface the wrong skill with too much confidence.

In 0.6.6, weak non-English matches enter a rescue path. The router can use the local vector sidecar and warm semantic runtime to recover relevant candidates. If the evidence is still uncertain, it returns safe names or a compact English-keyword recovery instruction. Vector-only uncertainty never earns automatic skill-body injection.

This keeps the fast path fast. A strong English lexical match does not pay for semantic search it does not need. Native-language prompts get the semantic path when it matters.

The daemon now upgrades without killing its predecessor

Fast multilingual retrieval depends on a warm local runtime. That creates a real product obligation: it must be available without asking the user to notice, start, and babysit another process.

Unlimited Skills now starts the loopback-only daemon proactively at session start and retains a per-prompt watchdog for recovery. Launches are detached, coalesced across processes, and identity-checked. Remote endpoints are refused, startup failure remains fail-open for the agent, and an emergency opt-out remains available for restricted environments.

The difficult case was the upgrade path. A daemon started by 0.6.4.post1 can still own the preferred port after the package is upgraded. Killing an unowned listener would be unsafe. Reusing an incompatible runtime would leave multilingual routing silently stale.

Version 0.6.6 introduces runtime_contract_version=2 and a deterministic contract-versioned fallback endpoint. If a verified legacy Unlimited Skills listener is already running, the new runtime leaves it untouched, starts on the shared fallback, and makes the hook, router, and doctor resolve the same active endpoint. The old process is not sacrificed to make the new release look healthy.

First run and diagnosis now converge on the truth

Precision is not useful if onboarding damages a working library. Quickstart now adds only missing bundled skills inside partially populated collections. Existing managed files stay in place, local/private skills are preserved, and legacy indexes are migrated rather than deleted.

Diagnostics also stop collapsing every non-ideal state into dead. The doctor reports English-keyword fallback, vector-index readiness, and warm-daemon readiness separately. An operator can see whether native-language search is fully warm, recovering through fallback, or missing an index, instead of receiving one misleading red light.

We changed the release contract too

0.6.6 closes a different class of failure: GitHub saying one thing while pip install delivers another.

The release train now builds the wheel and source distribution once, checks their metadata, clean-installs the exact wheel, and tests an in-place upgrade from the official PyPI 0.6.4.post1[all] package. That upgrade gate keeps a real legacy daemon running, proves the version-2 fallback becomes ready, runs a Russian semantic query, preserves a local sentinel skill, and migrates its legacy index.

Publishing is PyPI-first. The workflow uploads with Trusted Publishing, waits for the exact project/version endpoint, installs the public wheel into a clean environment, and runs retrieval and onboarding smoke before the matching GitHub release is considered complete.

The evidence behind the release

The final release commit passed 1,262 tests in Linux CI, with eight platform-specific skips and all four CI jobs green. The frozen 42-scenario effectiveness run measured:

  • 0.900 top-1 retrieval;
  • 0.933 top-3 retrieval;
  • zero false-positive hints across 12 negative scenarios;
  • 10 out of 10 precision for automatic skill-card injection;
  • 1.686-second p95 for cold indexed retrieval on the measured Windows environment.

A separate 100-step long run completed with zero failures, passed its privacy checks, and detected all seven negative controls. Frozen public contracts passed 11 out of 11 checks in the source tree and 12 out of 12 against the installed wheel. The final delta and live daemon-rollover path also received an independent release GO before merge.

These are measurements from the release gates, not promises about every machine. They are published because routing quality should be testable, not described with adjectives.

Try Unlimited Skills 0.6.6

For the local core and bundled quickstart:

python -m pip install --upgrade unlimited-skills==0.6.6
unlimited-skills quickstart

For multilingual vector search, install the runtime extras and build the local sidecar:

python -m pip install --upgrade "unlimited-skills[all]==0.6.6"
unlimited-skills vector-reindex

Unlimited Skills is open source. Read the 0.6.6 release, install it from PyPI, or inspect the implementation on GitHub.

The goal is not to make an agent say more. It is to make the right procedure arrive at the right moment, and make silence a first-class result when the evidence is not there.

Get in touch

Book a free consultation


    Protected by reCAPTCHA. The Google Privacy Policy and Terms of Service apply.