Skip to content

feat: add hierarchical skill group selector #21

feat: add hierarchical skill group selector

feat: add hierarchical skill group selector #21

Triggered via pull request August 16, 2026 14:30
Status Failure
Total duration 3m 46s
Artifacts

ci.yml

on: pull_request
Matrix: test
Fit to window
Zoom out
Zoom in

Annotations

9 errors and 20 warnings
typecheck
Process completed with exit code 2.
typecheck: packages/agent-core-v2/test/app/skillCatalog/types.test.ts#L54
Conversion of type '{ name: string; description: string; path: string; source: "user"; metadata: { type: string; category: string; issuer: string; collection: string; groups: string[]; tags: string[]; }; }' to type 'SkillDefinition' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first.
lint
Process completed with exit code 1.
eslint(no-unused-vars): apps/kimi-code/src/tui/components/dialogs/skill-selector.ts#L7
Identifier 'visibleWidth' is imported but never used.
test (1)
Process completed with exit code 1.
[cli] test/tui/components/dialogs/skill-selector.test.ts > SkillSelectorComponent > selects a skill on Enter and calls onSelect: apps/kimi-code/test/tui/components/dialogs/skill-selector.test.ts#L105
AssertionError: expected '─────────────────────────────────────…' to contain 'Skills › cv › ops › semaphore' - Expected + Received - Skills › cv › ops › semaphore + ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── + Select skill group (type to search) + ↑↓ navigate · Enter select · Esc back/cancel + + ❯ cv/ (5 skills) + Uncategorized/ (1 skill) + + Group: cv + 5 skills + + ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── ❯ test/tui/components/dialogs/skill-selector.test.ts:105:22
[cli] test/tui/components/dialogs/skill-selector.test.ts > SkillSelectorComponent > drills down into group on Enter and goes back on Escape: apps/kimi-code/test/tui/components/dialogs/skill-selector.test.ts#L63
AssertionError: expected '─────────────────────────────────────…' to contain 'Skills › cv' - Expected + Received - Skills › cv + ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── + Select skill group (type to search) + ↑↓ navigate · Enter select · Esc back/cancel + + ❯ cv/ (5 skills) + Uncategorized/ (1 skill) + + Group: cv + 5 skills + + ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── ❯ test/tui/components/dialogs/skill-selector.test.ts:63:22
test (2)
Process completed with exit code 1.
[agent-core-v2] test/state/stateManifest.test.ts > state manifest > docs/state-manifest.d.ts is up to date: packages/agent-core-v2/test/state/stateManifest.test.ts#L22
AssertionError: expected '// App, Workspace, Session & Agent St…' to be '// App, Workspace, Session & Agent St…' // Object.is equality - Expected + Received @@ -155,15 +155,10 @@ readonly whenToUse?: string; readonly disableModelInvocation?: boolean; readonly isSubSkill?: boolean; readonly safe?: boolean; readonly arguments?: string | readonly unknown[]; - readonly category?: string; - readonly issuer?: string; - readonly collection?: string; - readonly groups?: readonly string[]; - readonly tags?: readonly string[]; [key: string]: unknown; }; readonly source: /* SkillSource — packages/agent-core-v2/src/app/skillCatalog/types.ts */ 'project' | 'user' | 'extra' | 'builtin'; readonly plugin?: /* SkillPluginContext — packages/agent-core-v2/src/app/skillCatalog/types.ts */ { readonly id: string; @@ -196,15 +191,10 @@ readonly whenToUse?: string; readonly disableModelInvocation?: boolean; readonly isSubSkill?: boolean; readonly safe?: boolean; readonly arguments?: string | readonly unknown[]; - readonly category?: string; - readonly issuer?: string; - readonly collection?: string; - readonly groups?: readonly string[]; - readonly tags?: readonly string[]; [key: string]: unknown; }; readonly source: /* SkillSource — packages/agent-core-v2/src/app/skillCatalog/types.ts */ 'project' | 'user' | 'extra' | 'builtin'; readonly plugin?: /* SkillPluginContext — packages/agent-core-v2/src/app/skillCatalog/types.ts */ { readonly id: string; @@ -227,15 +217,10 @@ readonly whenToUse?: string; readonly disableModelInvocation?: boolean; readonly isSubSkill?: boolean; readonly safe?: boolean; readonly arguments?: string | readonly unknown[]; - readonly category?: string; - readonly issuer?: string; - readonly collection?: string; - readonly groups?: readonly string[]; - readonly tags?: readonly string[]; [key: string]: unknown; }; readonly source: /* SkillSource — packages/agent-core-v2/src/app/skillCatalog/types.ts */ 'project' | 'user' | 'extra' | 'builtin'; readonly plugin?: /* SkillPluginContext — packages/agent-core-v2/src/app/skillCatalog/types.ts */ { readonly id: string; @@ -266,15 +251,10 @@ readonly whenToUse?: string; readonly disableModelInvocation?: boolean; readonly isSubSkill?: boolean; readonly safe?: boolean; readonly arguments?: string | readonly unknown[]; - readonly category?: string; - readonly issuer?: string; - readonly collection?: string; - readonly groups?: readonly string[]; - readonly tags?: readonly string[]; [key: string]: unknown; }; readonly source: /* SkillSource — packages/agent-core-v2/src/app/skillCatalog/types.ts */ 'project' | 'user' | 'extra' | 'builtin'; readonly plugin?: /* SkillPluginContext — packages/agent-core-v2/src/app/skillCatalog/types.ts */ { readonly id: string; @@ -297,15 +277,10 @@ readonly whenToUse?: string; readonly disableModelInvocation?: boolean; readonly isSubSkill?: boolean; readonly safe?: boolean; readonly arguments?: string | readonly unknown[]; - readonly category?: string; - readonly issuer?: string; - readonly collection?: string; - readonly groups?: readonly string[]; - readonly tags?: readonly string[]; [key: string]: unknown; }; readonly source: /* SkillSource — packages/agent-core-v2/src/app/skillCatalog/types.ts */ 'project' | 'user' | 'extra' | 'builtin'; readonly plugin?: /* SkillPluginContext — packages/agent-core-v2/src/app/skillCatalog/types.ts */ { read
test-pi-tui
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
typecheck
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
test-vscode-legacy
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
lint
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
eslint-plugin-unicorn(no-array-sort): packages/agent-core-v2/src/_base/di/cascadeEngine.ts#L620
Use `Array#toSorted()` instead of `Array#sort()`.
eslint-plugin-unicorn(catch-error-name): packages/agent-core-v2/src/_base/errors/unexpectedError.ts#L35
The catch parameter "err" should be named "error"
eslint-plugin-unicorn(catch-error-name): packages/agent-core-v2/src/_base/errors/unexpectedError.ts#L26
The catch parameter "handlerErr" should be named "error"
eslint-plugin-import(first): packages/agent-core-v2/src/_base/di/test.ts#L16
Import statements must come first
eslint-plugin-import(first): packages/agent-core-v2/src/_base/di/test.ts#L15
Import statements must come first
eslint(no-loop-func): packages/agent-core-v2/src/_base/event.ts#L199
Function declared in a loop contains unsafe references to variable(s)
eslint(no-loop-func): packages/agent-core-v2/src/_base/event.ts#L194
Function declared in a loop contains unsafe references to variable(s)
eslint-plugin-import(no-duplicates): packages/agent-core-v2/src/_base/di/scope.ts#L14
Module './instantiation' is imported more than once in this file
build
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
test (5)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
test (1)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
test (2)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
test (3)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
test (4)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/