Support disable-model-invocation in skill frontmatter - #592
Merged
alejandro-ao merged 3 commits intoAug 17, 2026
Conversation
Contributor
Author
|
Note on the related PR #309 PR #309 came first and adds the same feature. Credit goes to @pedrobruning for the initial implementation. That PR did not get a review, and it looks stale. This PR includes the same core changes. It also includes items that PR #309 does not have:
If the maintainers prefer to continue with PR #309, that is not a problem. The reload fix is small. I can supply it there as a review comment instead. |
rian-dolphin
force-pushed
the
skill-disable-model-invocation
branch
from
August 17, 2026 08:40
917e572 to
23c60a0
Compare
Skills with disable-model-invocation: true in SKILL.md frontmatter are excluded from the system prompt's <available_skills> block, so the model cannot invoke them on its own. They stay loaded and remain available via explicit /skill:<name> invocation, the /skills picker, and autocomplete. Ports Pi's disableModelInvocation behavior. Reload signatures include the new flag so toggling it in frontmatter triggers a system prompt rebuild.
rian-dolphin
force-pushed
the
skill-disable-model-invocation
branch
from
August 17, 2026 15:01
23c60a0 to
4bd6d73
Compare
alejandro-ao
approved these changes
Aug 17, 2026
naripok
pushed a commit
to naripok/tau
that referenced
this pull request
Aug 18, 2026
Upstream changes since 95b7ca4: - aec16bb huggingface#592 supports disable-model-invocation skill frontmatter - 9c1285d huggingface#600 prepares the Tau 0.3.12 release - d240fa9 huggingface#613 adds a headless Pi-compatible strict-JSONL RPC frontend - 37a9e43 huggingface#616 aligns the RPC contract for interchangeable Tau/Pi frontends (compaction boundaries, provider history, canonical state) The RPC frontend and skill changes are orthogonal to the fork's turn-level retry and TUI work; two orthogonal methods collided in session.py (fork's _runtime_effective_context_window beside upstream's auto-compaction toggle) and both were kept. The fork version moves to 0.3.12+naripok.3 (upstream base 0.3.12, fork-local counter preserved), and the README sync reference is updated. The fork's turn-level retry events (turn_retry_start) stream over the new RPC channel with Pi-style camelCase aliases, so Pi-compatible frontends observe turn-level recovery; a regression test locks this in. Verified: 1642 tests pass, ruff check and format clean.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Add support for
disable-model-invocation: trueinSKILL.mdfrontmatter. This behavior matches Pi'sdisableModelInvocationoption.Tau excludes a skill with this flag from the system prompt. The model cannot see the skill or invoke it by itself. The skill stays loaded, and the user can still access it through:
/skill:<name>invocation/skillspickerThis option is useful for workflows that the user must start. Examples include report generators and release checklists.
Implementation
disable_model_invocation: bool = FalsetoSkill.SKILL.md.truewithout regard to letter case. Treat all other values as false. This behavior matches Pi's strict boolean check without a YAML dependency.format_skills_for_promptandbuild_skill_index.•) for model-visible skills and a hollow bullet (◦) for user-only skills in the sidebar.Testing
uv run pytest tests/test_tui_app.py— 368 passed.uv run pytest tests/test_skills.py tests/test_system_prompt.py— 29 passed.uv run ruff check src/tau_coding/tui/widgets.py tests/test_tui_app.py— passed.uv run ruff format --check src/tau_coding/tui/widgets.py tests/test_tui_app.py— passed.Tests cover:
Documentation
website/content/guides/skills-and-prompts.mdwith user-only skill instructions.src/tau_coding/data/docs/skills.mdwith the frontmatter option.website/content/guides/tui.mdwith the sidebar bullet meanings.Relationship to #309
PR #309 by @pedrobruning proposed the same core feature first and deserves credit for the initial implementation. It appears stale, with no review since July. This PR also adds the reload signature fix, packaged documentation, parser edge-case tests, sidebar token refresh, and sidebar visibility indicators.