ShellPilot v0.9.0 — skill progressive disclosure
Skill progressive disclosure
ShellPilot v0.9.0 lets the local model read a skill's deeper documentation on demand rather than force-injecting it into every prompt or leaving it unreachable. The change is additive and opt-in-gated — a default session behaves exactly as it did in v0.8.2.
Highlights
skill_read(skill, resource)tool — opens an in-memory skill document by name, scoped to a skill. It never interprets a filesystem path, and invalid or reserved skills are unreadable. Read-only, no approval gate.- On-demand resources — any skill resource without a trigger (every template, and every reference outside the planning skill) is now discoverable and readable without being injected. No data-model or loader change was needed.
Readable docsmenu — when at least one skill is enabled, active skills advertise their on-demand document names in a single compact line, so the model knows what it can open.- Opt-in gating — both
skill_readand the menu appear only when[skills] enabledis non-empty, mirroring how the web tools register only when web is enabled. A default session gains no new tool surface and no menu. - Showcase — the built-in
skill-authoringskill's references are now real authoring docs (anatomy, trigger choice, resource routing), and itsSKILL.mddemonstrates the pattern: a lean injected body that routes to named on-demand docs. - README — rewritten from the ground up for the milestone, with an architecture diagram, capability tables, an annotated session, and platform support notes.
Validation
- Full check suite green (
ruff,ruff format --check,mypy --strict,pytest) — 908 tests, on Python 3.11 and 3.14. - Live acceptance on
gemma4:e4b: the model autonomously read the relevant on-demand docs when the task called for them, and ignored the menu for unrelated work. Cross-model validation onqwen3.5:4b-mlxis deferred.
Notes
- Planning references remain injected; nothing previously injected moved to on-demand.
docs/DESIGN.md(sections 23.1 and 23.4) documents the mechanism.
Full changelog: v0.8.2...v0.9.0