Tool Family: runtime-skills
- Registration source:
tools/mcp_tools/runtime_skills.py:8 register_runtime_skill_tools(mcp, *, ctx)— auto-discovered but conditionally registers only when_runtime_skills_enabled(config)(tools/mcp_tools/registry.py:271-273):skills.enabled: trueandskills.allow_model_lookup: true. Otherwise no tools are added. - Gate: all
@audit_tool(local read-only methodology catalog; never changes scope/permission/approval).
Tools Exported (4) — conditional
| Tool | Params | Result Shape | Notes |
|---|---|---|---|
list_runtime_skills | include_maybe: bool=False, limit: int=50 (capped 1..200) | `RUNTIME_SKILLS:\n- name maybe? | tags: ... |
search_runtime_skills | query: str, tags: str="" (comma/space CSV), include_maybe=False, limit=10 (capped 1..25) | RUNTIME_SKILL_SEARCH: + matches `name | tags |
load_runtime_skill | name: str, reason: str="" | RUNTIME_SKILL_LOAD: loaded\nNAME: ...\nPATH: ...\nSAFETY: Advisory only; scope, ... still apply.\n\n<rendered markdown> or not found: ... / blocked: ... is under maybe/ and maybe_enabled is false. | registry.get(name) exact; skills.maybe_enabled gates maybe; max_chars_per_skill = skills.max_chars_per_skill (default 2500 via _positive_int) and render_skill_context([skill], reasons, max_chars_per_skill, max_total_chars). |
list_skill_references | name: str | RUNTIME_SKILL_REFERENCES: name\n- references/*.md\nNIST CSF: ...\nMITRE ATT&CK: ... or ... has no references/*.md files. / not found: ... / listing disabled by skills.allow_reference_listing. | Requires skills.allow_reference_listing: true (default true) else blocked. Surfaces metadata.references paths only — not contents — plus nist_csf/mitre_attack. |
Dependencies
tools/skill_registry_cache.get_registry,tools/skill_registry.load_skill_registry,render_skill_contexttools/mcp_tools/registry._skills_config(overlayCONFIG_SCHEMA.skills),_runtime_skills_enabled,_positive_int,_truncate_texttools/config_manager.CONFIG_SCHEMA
Config
skills.enabled: bool(default true),skills.allow_model_lookup: bool(default true) — both required for enableskills.maybe_enabled: bool(default false) — gatemaybe/skillsskills.allow_reference_listing: bool(default true) — gateslist_skill_referencesskills.max_chars_per_skill: int(default 2500) — render capskills.roots: list[str](default["skills"]) — catalog discovery
Auditing
- All
@audit_toolwith_redact_args(no secrets in these params);reasonnot wholesale-redacted but still content-masked if it contained an inline cred shape. - Advisory only disclaimer included in
load_runtime_skilloutput.
Validation
limitclamped via_positive_int+max(1, min(...)).maybegate checked both in list and load.nameexact match required;searchreturns empty string when no matches (no matches.sentinel).
Tests
tests/test_mcp_runtime_skills.py:67,90,121,140,150,171,183,198— list/search/load + audit, disabling viaskills.enabled: false/allow_model_lookup: false,list_skill_referencespaths / unknown / disabled,referencesnot read into context, metadata parsing (nist_csf/mitre)tests/test_mcp_tool_registration.py— expectslist_runtime_skills,search_runtime_skills,load_runtime_skillwhen enabled
Related Docs
docs/skills.md/docs/skill-authoring.md— skill catalog authoringdocs/mcp/registration.md
source: repo docs (build sync)Edit this page on GitHub →