From f61165aa9a1cedb1d40e9126c4153ef170ee4fd2 Mon Sep 17 00:00:00 2001 From: liruifengv Date: Fri, 5 Jun 2026 18:01:34 +0800 Subject: [PATCH] fix: use underscore sub_skill experimental flag id (#483) * fix: use underscore sub_skill experimental flag id * chore: keep changeset wording unchanged --- packages/agent-core/src/flags/registry.ts | 2 +- packages/agent-core/src/skill/builtin/index.ts | 4 ++-- packages/agent-core/src/skill/registry.ts | 2 +- packages/agent-core/src/skill/scanner.ts | 4 ++-- packages/agent-core/test/session/init.test.ts | 4 ++-- .../agent-core/test/skill/builtin-sub-skill.test.ts | 10 +++++----- packages/agent-core/test/skill/scanner.test.ts | 2 +- 7 files changed, 14 insertions(+), 14 deletions(-) diff --git a/packages/agent-core/src/flags/registry.ts b/packages/agent-core/src/flags/registry.ts index 704fc5368..e202cc6dd 100644 --- a/packages/agent-core/src/flags/registry.ts +++ b/packages/agent-core/src/flags/registry.ts @@ -37,7 +37,7 @@ export const FLAG_DEFINITIONS = [ surface: 'core', }, { - id: 'sub-skill', + id: 'sub_skill', title: 'Sub-skill', description: 'Enable discovery of nested skills inside skill bundles that declare has-sub-skill.', env: 'KIMI_CODE_EXPERIMENTAL_SUB_SKILL', diff --git a/packages/agent-core/src/skill/builtin/index.ts b/packages/agent-core/src/skill/builtin/index.ts index c2469b55f..36a28eca8 100644 --- a/packages/agent-core/src/skill/builtin/index.ts +++ b/packages/agent-core/src/skill/builtin/index.ts @@ -9,7 +9,7 @@ import { import { UPDATE_CONFIG_SKILL } from './update-config'; type SubSkillFlagResolver = { - enabled(id: 'sub-skill'): boolean; + enabled(id: 'sub_skill'): boolean; }; export function registerBuiltinSkills( @@ -19,7 +19,7 @@ export function registerBuiltinSkills( const experimentalFlags = options.experimentalFlags ?? flags; registry.registerBuiltinSkill(MCP_CONFIG_SKILL); registry.registerBuiltinSkill(UPDATE_CONFIG_SKILL); - if (experimentalFlags.enabled('sub-skill')) { + if (experimentalFlags.enabled('sub_skill')) { registry.registerBuiltinSkill(SUB_SKILL_PARENT); registry.registerBuiltinSkill(SUB_SKILL_REVIEW); registry.registerBuiltinSkill(SUB_SKILL_CONSOLIDATE); diff --git a/packages/agent-core/src/skill/registry.ts b/packages/agent-core/src/skill/registry.ts index 3e212befa..f392aa150 100644 --- a/packages/agent-core/src/skill/registry.ts +++ b/packages/agent-core/src/skill/registry.ts @@ -8,7 +8,7 @@ import { escapeXmlAttr } from '../utils/xml-escape'; const LISTING_DESC_MAX = 250; type SubSkillFlagResolver = { - enabled(id: 'sub-skill'): boolean; + enabled(id: 'sub_skill'): boolean; }; export class SkillNotFoundError extends Error { diff --git a/packages/agent-core/src/skill/scanner.ts b/packages/agent-core/src/skill/scanner.ts index 75521b0e2..c133faf6d 100644 --- a/packages/agent-core/src/skill/scanner.ts +++ b/packages/agent-core/src/skill/scanner.ts @@ -12,7 +12,7 @@ const PROJECT_BRAND_DIRS = ['.kimi-code/skills'] as const; const PROJECT_GENERIC_DIRS = ['.agents/skills'] as const; type SubSkillFlagResolver = { - enabled(id: 'sub-skill'): boolean; + enabled(id: 'sub_skill'): boolean; }; // Bounds recursion so a directory symlink cycle inside a skill root cannot @@ -394,7 +394,7 @@ function hasSubSkillEnabled( skill: SkillDefinition, experimentalFlags: SubSkillFlagResolver, ): boolean { - if (!experimentalFlags.enabled('sub-skill')) return false; + if (!experimentalFlags.enabled('sub_skill')) return false; const nested = skill.metadata['metadata']; const nestedFlag = typeof nested === 'object' && nested !== null diff --git a/packages/agent-core/test/session/init.test.ts b/packages/agent-core/test/session/init.test.ts index 17e243741..9e6576cb4 100644 --- a/packages/agent-core/test/session/init.test.ts +++ b/packages/agent-core/test/session/init.test.ts @@ -486,7 +486,7 @@ describe('AgentAPI.startBtw', () => { homedir: sessionDir, rpc: createSessionRpc([]), skills: { explicitDirs: [skillsRoot] }, - experimentalFlags: new FlagResolver({}, FLAG_DEFINITIONS, { 'sub-skill': false }), + experimentalFlags: new FlagResolver({}, FLAG_DEFINITIONS, { 'sub_skill': false }), }); try { @@ -504,7 +504,7 @@ describe('AgentAPI.startBtw', () => { homedir: sessionDir, rpc: createSessionRpc([]), skills: { explicitDirs: [skillsRoot] }, - experimentalFlags: new FlagResolver({}, FLAG_DEFINITIONS, { 'sub-skill': true }), + experimentalFlags: new FlagResolver({}, FLAG_DEFINITIONS, { 'sub_skill': true }), }); try { diff --git a/packages/agent-core/test/skill/builtin-sub-skill.test.ts b/packages/agent-core/test/skill/builtin-sub-skill.test.ts index a9e69ae9e..6c8940fd5 100644 --- a/packages/agent-core/test/skill/builtin-sub-skill.test.ts +++ b/packages/agent-core/test/skill/builtin-sub-skill.test.ts @@ -25,7 +25,7 @@ describe('builtin skill: sub-skill', () => { it('registers through registerBuiltinSkills but stays out of the model skill listing', () => { const registry = new SkillRegistry(); registerBuiltinSkills(registry, { - experimentalFlags: new FlagResolver({}, FLAG_DEFINITIONS, { 'sub-skill': true }), + experimentalFlags: new FlagResolver({}, FLAG_DEFINITIONS, { 'sub_skill': true }), }); expect(registry.getSkill('sub-skill')).toBeDefined(); @@ -37,7 +37,7 @@ describe('builtin skill: sub-skill', () => { it('remains visible in the full skill list for CLI display when enabled', () => { const registry = new SkillRegistry(); registerBuiltinSkills(registry, { - experimentalFlags: new FlagResolver({}, FLAG_DEFINITIONS, { 'sub-skill': true }), + experimentalFlags: new FlagResolver({}, FLAG_DEFINITIONS, { 'sub_skill': true }), }); expect(registry.listSkills().some((skill) => skill.name === 'sub-skill')).toBe(true); @@ -46,7 +46,7 @@ describe('builtin skill: sub-skill', () => { it('does not register sub-skill builtins when the scoped flag is disabled', () => { const registry = new SkillRegistry(); registerBuiltinSkills(registry, { - experimentalFlags: new FlagResolver({}, FLAG_DEFINITIONS, { 'sub-skill': false }), + experimentalFlags: new FlagResolver({}, FLAG_DEFINITIONS, { 'sub_skill': false }), }); expect(registry.getSkill('sub-skill')).toBeUndefined(); @@ -70,7 +70,7 @@ describe('builtin skill: sub-skill.review', () => { it('registers through registerBuiltinSkills', () => { const registry = new SkillRegistry(); registerBuiltinSkills(registry, { - experimentalFlags: new FlagResolver({}, FLAG_DEFINITIONS, { 'sub-skill': true }), + experimentalFlags: new FlagResolver({}, FLAG_DEFINITIONS, { 'sub_skill': true }), }); expect(registry.getSkill('sub-skill.review')).toBeDefined(); @@ -100,7 +100,7 @@ describe('builtin skill: sub-skill.consolidate', () => { it('registers through registerBuiltinSkills', () => { const registry = new SkillRegistry(); registerBuiltinSkills(registry, { - experimentalFlags: new FlagResolver({}, FLAG_DEFINITIONS, { 'sub-skill': true }), + experimentalFlags: new FlagResolver({}, FLAG_DEFINITIONS, { 'sub_skill': true }), }); expect(registry.getSkill('sub-skill.consolidate')).toBeDefined(); diff --git a/packages/agent-core/test/skill/scanner.test.ts b/packages/agent-core/test/skill/scanner.test.ts index 2c5e0ff6d..d4b2b6e47 100644 --- a/packages/agent-core/test/skill/scanner.test.ts +++ b/packages/agent-core/test/skill/scanner.test.ts @@ -391,7 +391,7 @@ describe('discoverSkills shape and ordering', () => { const skills = await discoverSkills({ roots: [{ path: root, source: 'user' }], - experimentalFlags: new FlagResolver({}, FLAG_DEFINITIONS, { 'sub-skill': true }), + experimentalFlags: new FlagResolver({}, FLAG_DEFINITIONS, { 'sub_skill': true }), }); expect(skills.map((s) => s.name)).toEqual(['inner', 'outer']);