feat(plugins): merge Skill management into plugins

This commit is contained in:
inman
2026-09-07 18:36:33 +08:00
parent bb8a19eecf
commit ab9f889233
49 changed files with 461 additions and 1218 deletions

View File

@@ -160,7 +160,7 @@ async function resolve(effective: EffectivePluginResolver, assignedSkillIds = ['
}
describe('effective plugin resolver', () => {
it('rejects Marketplace Skill ID collisions with core and other packages without changing project assignment', async () => {
it('accepts former local Skill IDs and rejects collisions between Marketplace packages', async () => {
const coreCollision: CodingPluginDefinition = {
...skillOnlyDefinition,
id: 'makelore.core-collision',
@@ -219,14 +219,20 @@ describe('effective plugin resolver', () => {
expect(result.effectiveSkillIds).toEqual(['agent-browser', 'shared-skill']);
expect(result.skillEntries).toEqual([
{ id: 'agent-browser', entryPath: 'agent-browser/SKILL.md' },
{
id: 'agent-browser',
entryPath: 'skills/agent-browser/SKILL.md',
packageRoot: 'C:/packages/core-collision-1',
},
{ id: 'shared-skill', entryPath: 'skills/shared/SKILL.md', packageRoot: 'C:/packages/collision-a-1' },
]);
expect(result.pluginReleaseIds).toEqual(['collision-a-1']);
expect(result.pluginReleaseIds).toEqual(['core-collision-1', 'collision-a-1']);
expect(result.unavailableReasons).toEqual(expect.arrayContaining([
expect.objectContaining({ pluginId: coreCollision.id, code: 'skill_owner_conflict' }),
expect.objectContaining({ pluginId: packageB.id, code: 'skill_owner_conflict' }),
]));
expect(result.unavailableReasons).not.toEqual(expect.arrayContaining([
expect.objectContaining({ pluginId: coreCollision.id, code: 'skill_owner_conflict' }),
]));
});
it('reserves every bundled Skill owner, including Data Service, before accepting Marketplace packages', async () => {