skill-inject 0.9.0

skill-inject: local semantic auto-injection of agent skills
Documentation
# ski (skill-inject)

> Local, model-agnostic **automatic skill injection** for [Claude Code](https://docs.claude.com/en/docs/claude-code) and [opencode](https://opencode.ai). A strong model often won't reach for a skill it should on indirect prompts; `ski` is a local, deterministic nudge that embeds the prompt on CPU, ranks it against your skill descriptions, and injects the matching skill only when one actually fits — same result on any model, no API call, nothing leaving your machine.

`ski` is a single Rust binary plus thin host adapters (Claude Code hooks, an opencode plugin), packaged as a one-plugin Claude Code marketplace. The pipeline — embed → retrieve (bge-small bi-encoder) → rerank (JINA-turbo cross-encoder) → gate → per-session dedup — runs entirely offline in about half a second per prompt (~270 MB RAM). It fails open everywhere: any error means no output and never blocks a prompt.

## Docs

- [README](https://github.com/bcmyguest/skill-injector/blob/main/README.md): what ski is, why it exists, install, usage, configuration, and how the two-stage ranking works.
- [DEVELOPING.md](https://github.com/bcmyguest/skill-injector/blob/main/DEVELOPING.md): dev workflow — build, test, lint, release.
- [PLAN.md](https://github.com/bcmyguest/skill-injector/blob/main/PLAN.md): design rationale and roadmap.
- [opencode adapter](https://github.com/bcmyguest/skill-injector/blob/main/opencode/README.md): opencode skill roots and plugin event map.

## Install

- [install.sh](https://github.com/bcmyguest/skill-injector/blob/main/scripts/install.sh): one-command install of the prebuilt binary into `~/.local/bin`, auto-wiring every host it finds (`curl -fsSL https://raw.githubusercontent.com/bcmyguest/skill-injector/main/scripts/install.sh | sh`).
- [Releases](https://github.com/bcmyguest/skill-injector/releases): prebuilt Linux x86_64 binary plus `.deb` / `.rpm` packages.
- Claude marketplace: `/plugin marketplace add bcmyguest/skill-injector` then `/plugin install skill-inject@skill-inject`.
- From source: `cargo install --path .` (real embedder + reranker) or `--no-default-features` (offline bag-of-words, no model download).

## Reference

- [src/](https://github.com/bcmyguest/skill-injector/tree/main/src): the Rust implementation (`ski hook`, `observe`, `session-start`, `index`, `why`, `doctor`, `status`, `history`, `suggest`).
- [config.rs](https://github.com/bcmyguest/skill-injector/blob/main/src/config.rs): every `~/.config/ski/config.toml` key (`deny`, `force`, `max_skills`, `rerank_min`, `project_boost`, ...).
- [examples/](https://github.com/bcmyguest/skill-injector/tree/main/examples): worked examples.
- [tests/fixtures/skills/](https://github.com/bcmyguest/skill-injector/tree/main/tests/fixtures/skills): self-contained skill fixtures the golden tests rank against.

## Optional

- [injection-improvements.md](https://github.com/bcmyguest/skill-injector/blob/main/docs/injection-improvements.md): notes on tuning ranking quality.
- [LICENSE](https://github.com/bcmyguest/skill-injector/blob/main/LICENSE): GNU AGPL-3.0-or-later. The authors additionally ask (non-binding) that this project not be used as training, fine-tuning, or evaluation data for ML/AI systems.