feat(skills): pull group skills from netx /mcp resources, drop bundled copy

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
oliver 2026-10-16 23:14:39 +08:00
parent 277a61894d
commit fa82f530e9
31 changed files with 2074 additions and 2027 deletions

View file

@ -4,10 +4,38 @@
import assert from 'node:assert/strict'
import test from 'node:test'
import { mkdtempSync, rmSync } from 'node:fs'
import { tmpdir } from 'node:os'
import { join } from 'node:path'
import { registerGroupSkills } from '../src/netx/group-skills.ts'
import { replaceSkillsCache } from '../src/netx/skills-cache.ts'
const OPS_SKILL = `---
name: netx-ops
description: Ops playbook
---
Body
`
test('registerGroupSkills appends disabled footnote; skips disabled groups', async (t) => {
const previous = process.env.DSH_HOME
const home = mkdtempSync(join(tmpdir(), 'netxops-skills-disabled-'))
process.env.DSH_HOME = home
t.after(() => {
rmSync(home, { recursive: true, force: true })
if (previous === undefined) delete process.env.DSH_HOME
else process.env.DSH_HOME = previous
})
const apiUrl = 'http://127.0.0.1:8890'
const root = replaceSkillsCache(apiUrl, [{
group: 'ops',
skill: 'netx-ops',
relPath: 'SKILL.md',
text: OPS_SKILL,
}])
test('registerGroupSkills appends disabled footnote; skips disabled groups', async () => {
/** @type {Array<{ name: string, content: string }>} */
const registered = []
const ctx = {
@ -21,6 +49,7 @@ test('registerGroupSkills appends disabled footnote; skips disabled groups', asy
}
const dispose = await registerGroupSkills(ctx, ['ops'], 'test', {
skillsRoot: root,
disabledByGroup: { ops: ['netx__execManagedNe'] },
lang: 'zh',
})
@ -30,6 +59,7 @@ test('registerGroupSkills appends disabled footnote; skips disabled groups', asy
registered.length = 0
const dispose2 = await registerGroupSkills(ctx, [], 'test', {
skillsRoot: root,
disabledByGroup: { ops: ['netx__execManagedNe'] },
})
assert.equal(registered.length, 0)
@ -37,6 +67,7 @@ test('registerGroupSkills appends disabled footnote; skips disabled groups', asy
registered.length = 0
const dispose3 = await registerGroupSkills(ctx, ['ops'], 'test', {
skillsRoot: root,
disabledByGroup: { ops: ['netx__execManagedNe'] },
lang: 'en',
})