Skip to content

fix: allow disable-model-invocation skills to be loaded via systematic_skill tool#80

Merged
marcusrbrown merged 1 commit into
mainfrom
fix/update-disable-model-invocation-handling
Feb 14, 2026
Merged

fix: allow disable-model-invocation skills to be loaded via systematic_skill tool#80
marcusrbrown merged 1 commit into
mainfrom
fix/update-disable-model-invocation-handling

Conversation

@marcusrbrown
Copy link
Copy Markdown
Owner

Summary

  • Bug: Skills with disable-model-invocation: true were completely unreachable via the systematic_skill tool. The single getSystematicSkills() function filtered them out for both description building (correct) and execution (incorrect), causing "Skill not found" errors when explicitly requested by name.
  • Fix: Split into getAllSkills() (used by execute() — any non-disabled skill is loadable) and getDiscoverableSkills() (used by buildDescription() and buildParameterHint() — hides disableModelInvocation skills from AI context). Error messages only suggest discoverable skills to avoid leaking hidden skill names.
  • Affected skills: orchestrating-swarms, file-todos, compound-docs

Behavior After Fix

Aspect disable-model-invocation: true
In tool description (AI context) ❌ Hidden
Loadable via systematic_skill by exact name ✅ Works
Registered as slash command ✅ Works (unchanged)
Listed in error suggestions ❌ Hidden

Tests Added

  • excludes disableModelInvocation skills from description
  • loads disableModelInvocation skill when explicitly requested
  • does not list disableModelInvocation skills in error suggestions

All 296 unit tests pass. Typecheck and lint clean.

…c_skill tool

Skills with disable-model-invocation: true were filtered from both the tool
description and the execute path, making them completely unreachable. Split
getSystematicSkills() into getAllSkills() (for execution) and
getDiscoverableSkills() (for description/hints) so hidden skills can still
be loaded by explicit name while remaining absent from AI-visible context.
@fro-bot
Copy link
Copy Markdown
Collaborator

fro-bot commented Feb 14, 2026

Code Review Summary

Verdict: ✅ APPROVED

The PR correctly fixes the bug where skills with were unreachable via the tool.

What Changed

File Changes
Split single into (for execution) and (for AI descriptions)
Added 3 new tests covering the fix

Analysis

Logic Correctness: ✅ The fix properly separates concerns:

  • returns ALL non-disabled skills (used by )
  • filters out skills (used by description building and error messages)

Test Coverage: ✅ New tests verify:

  1. Hidden skills excluded from tool description
  2. Hidden skills loadable when explicitly requested by name
  3. Hidden skills not leaked in error suggestions

Edge Cases: ✅ Properly handled:

  • Disabled skills ( list) take precedence - filtered first
  • Skills with BOTH AND remain inaccessible

Verification Results

Check Status
Unit tests ✅ 16/16 pass
All tests ✅ 315/315 pass
TypeScript ✅ Clean
Lint (Biome) ✅ Clean

Minor Observation

The PR is well-structured with clear separation of concerns. The naming ( vs ) accurately describes their different purposes. No further improvements needed.

@marcusrbrown
Copy link
Copy Markdown
Owner Author

@fro-bot approve the PR

Copy link
Copy Markdown
Collaborator

@fro-bot fro-bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved

@fro-bot
Copy link
Copy Markdown
Collaborator

fro-bot commented Feb 14, 2026

✅ PR Approved

The PR has been approved and is ready for merge.

@marcusrbrown marcusrbrown merged commit fbe1780 into main Feb 14, 2026
11 checks passed
@marcusrbrown marcusrbrown deleted the fix/update-disable-model-invocation-handling branch February 14, 2026 23:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants