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 <noreply@anthropic.com>

---------

Co-authored-by: Calum Reeves <reevesc88@users.noreply.github.com>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
haelyra 2026-08-04 16:57:27 -04:00 committed by GitHub
parent 8a97868b5b
commit f235549cb8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 12 additions and 5 deletions

View File

@ -7,7 +7,7 @@ const {
normalizeRelativePath, normalizeRelativePath,
} = require('./helpers'); } = 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) { function supportsAntigravitySourcePath(sourceRelativePath) {
const normalizedPath = normalizeRelativePath(sourceRelativePath); const normalizedPath = normalizeRelativePath(sourceRelativePath);

View File

@ -846,7 +846,7 @@ function runTests() {
id: 'unsupported-antigravity', id: 'unsupported-antigravity',
kind: 'skills', kind: 'skills',
description: 'Unsupported', description: 'Unsupported',
paths: ['.cursor', 'skills/example'], paths: ['.cursor', 'skills/example', 'commands/example'],
targets: ['antigravity'], targets: ['antigravity'],
dependencies: [], dependencies: [],
defaultInstall: false, defaultInstall: false,
@ -875,8 +875,12 @@ function runTests() {
'Unsupported antigravity paths should be filtered from planned operations' 'Unsupported antigravity paths should be filtered from planned operations'
); );
assert.ok( assert.ok(
plan.operations.some(operation => operation.sourceRelativePath === 'skills/example'), plan.operations.every(operation => operation.sourceRelativePath !== 'skills/example'),
'Supported antigravity skill paths should still be planned' '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 { } finally {
cleanupTestRepo(repoRoot); cleanupTestRepo(repoRoot);

View File

@ -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', 'rules', 'common-coding-style.md')));
assert.ok(fs.existsSync(path.join(projectDir, '.agent', 'skills', 'architect.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', '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')); const state = readJson(path.join(projectDir, '.agent', 'ecc-install-state.json'));
assert.strictEqual(state.request.profile, 'core'); assert.strictEqual(state.request.profile, 'core');