@@ -27,7 +27,7 @@ function makeEntry(skill: Skill): SkillEntry {
2727 frontmatter : { } ,
2828 exposure : {
2929 includeInRuntimeRegistry : true ,
30- includeInAvailableSkillsPrompt : skill . disableModelInvocation !== true ,
30+ includeInAvailableSkillsPrompt : true ,
3131 userInvocable : true ,
3232 } ,
3333 } ;
@@ -59,6 +59,13 @@ describe("formatSkillsCompact", () => {
5959 expect ( formatSkillsForPrompt ( skills ) ) . toBe ( upstreamFormatSkillsForPrompt ( skills ) ) ;
6060 } ) ;
6161
62+ it ( "renders all passed skills in the full formatter without reapplying visibility policy" , ( ) => {
63+ const hidden : Skill = { ...makeSkill ( "hidden" ) , disableModelInvocation : true } ;
64+ const out = formatSkillsForPrompt ( [ makeSkill ( "visible" ) , hidden ] ) ;
65+ expect ( out ) . toContain ( "visible" ) ;
66+ expect ( out ) . toContain ( "hidden" ) ;
67+ } ) ;
68+
6269 it ( "returns empty string for no skills" , ( ) => {
6370 expect ( formatSkillsCompact ( [ ] ) ) . toBe ( "" ) ;
6471 } ) ;
@@ -93,9 +100,25 @@ describe("formatSkillsCompact", () => {
93100} ) ;
94101
95102describe ( "applySkillsPromptLimits (via buildWorkspaceSkillsPrompt)" , ( ) => {
96- it ( "applies disableModelInvocation filtering before compact formatting" , ( ) => {
97- const hidden : Skill = { ...makeSkill ( "hidden" ) , disableModelInvocation : true } ;
98- const prompt = buildPrompt ( [ makeSkill ( "visible" ) , hidden ] , { maxChars : 4_000 } ) ;
103+ it ( "respects explicit exposure metadata before compact formatting" , ( ) => {
104+ const hidden = makeEntry ( { ...makeSkill ( "hidden" ) , disableModelInvocation : true } ) ;
105+ hidden . exposure = {
106+ includeInRuntimeRegistry : true ,
107+ includeInAvailableSkillsPrompt : false ,
108+ userInvocable : true ,
109+ } ;
110+
111+ const prompt = buildWorkspaceSkillsPrompt ( "/fake" , {
112+ entries : [ makeEntry ( makeSkill ( "visible" ) ) , hidden ] ,
113+ config : {
114+ skills : {
115+ limits : {
116+ maxSkillsPromptChars : 4_000 ,
117+ } ,
118+ } ,
119+ } satisfies OpenClawConfig ,
120+ } ) ;
121+
99122 expect ( prompt ) . toContain ( "visible" ) ;
100123 expect ( prompt ) . not . toContain ( "hidden" ) ;
101124 } ) ;
0 commit comments