From f235549cb8370f7ab475700a786b3d0b98bfda29 Mon Sep 17 00:00:00 2001 From: haelyra <49814733+haelyra@users.noreply.github.com> Date: Tue, 4 Aug 2026 16:57:27 -0400 Subject: [PATCH] fix(install): exclude ECC skills from antigravity install target (#2680) * fix: exclude ECC skills from antigravity install target * test(install): cover antigravity skills exclusion Two tests encoded the collision the parent commit fixes. install-manifests used skills/example as its example of a supported antigravity path; it now asserts skills are filtered and uses commands/example for the positive case, so the test still proves supported paths survive filtering. install-apply asserted .agent/skills/tdd-workflow/SKILL.md exists. That directory is antigravity's agent directory and already receives ECC agents/, so the assertion was pinning ECC skills and ECC agents to the same destination. Inverted, with the reason recorded inline. Co-Authored-By: Claude Opus 5 --------- Co-authored-by: Calum Reeves Co-authored-by: Claude Opus 5 --- scripts/lib/install-targets/antigravity-project.js | 2 +- tests/lib/install-manifests.test.js | 10 +++++++--- tests/scripts/install-apply.test.js | 5 ++++- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/scripts/lib/install-targets/antigravity-project.js b/scripts/lib/install-targets/antigravity-project.js index 2db1af3d..738f32e8 100644 --- a/scripts/lib/install-targets/antigravity-project.js +++ b/scripts/lib/install-targets/antigravity-project.js @@ -7,7 +7,7 @@ const { normalizeRelativePath, } = require('./helpers'); -const SUPPORTED_SOURCE_PREFIXES = ['rules', 'commands', 'agents', 'skills', '.agents', 'AGENTS.md']; +const SUPPORTED_SOURCE_PREFIXES = ['rules', 'commands', 'agents', '.agents', 'AGENTS.md']; function supportsAntigravitySourcePath(sourceRelativePath) { const normalizedPath = normalizeRelativePath(sourceRelativePath); diff --git a/tests/lib/install-manifests.test.js b/tests/lib/install-manifests.test.js index 9cbbf6bf..481f0d09 100644 --- a/tests/lib/install-manifests.test.js +++ b/tests/lib/install-manifests.test.js @@ -846,7 +846,7 @@ function runTests() { id: 'unsupported-antigravity', kind: 'skills', description: 'Unsupported', - paths: ['.cursor', 'skills/example'], + paths: ['.cursor', 'skills/example', 'commands/example'], targets: ['antigravity'], dependencies: [], defaultInstall: false, @@ -875,8 +875,12 @@ function runTests() { 'Unsupported antigravity paths should be filtered from planned operations' ); assert.ok( - plan.operations.some(operation => operation.sourceRelativePath === 'skills/example'), - 'Supported antigravity skill paths should still be planned' + plan.operations.every(operation => operation.sourceRelativePath !== 'skills/example'), + 'ECC skills should be filtered: antigravity .agent/skills holds ECC agents' + ); + assert.ok( + plan.operations.some(operation => operation.sourceRelativePath === 'commands/example'), + 'Supported antigravity source paths should still be planned' ); } finally { cleanupTestRepo(repoRoot); diff --git a/tests/scripts/install-apply.test.js b/tests/scripts/install-apply.test.js index 72150314..575bf2a8 100644 --- a/tests/scripts/install-apply.test.js +++ b/tests/scripts/install-apply.test.js @@ -580,7 +580,10 @@ function runTests() { assert.ok(fs.existsSync(path.join(projectDir, '.agent', 'rules', 'common-coding-style.md'))); assert.ok(fs.existsSync(path.join(projectDir, '.agent', 'skills', 'architect.md'))); assert.ok(fs.existsSync(path.join(projectDir, '.agent', 'workflows', 'plan.md'))); - assert.ok(fs.existsSync(path.join(projectDir, '.agent', 'skills', 'tdd-workflow', 'SKILL.md'))); + // .agent/skills is where antigravity keeps its agents, and ECC agents are + // already mapped there. Installing ECC skills into the same directory made + // the two collide, so skills are no longer an antigravity source path. + assert.ok(!fs.existsSync(path.join(projectDir, '.agent', 'skills', 'tdd-workflow', 'SKILL.md'))); const state = readJson(path.join(projectDir, '.agent', 'ecc-install-state.json')); assert.strictEqual(state.request.profile, 'core');