From cbd21092a9a55107ea5630fa1535d8652223821b Mon Sep 17 00:00:00 2001 From: Tom Boucher Date: Tue, 23 Jun 2026 10:21:06 -0400 Subject: [PATCH 1/3] fix(#1614): install Antigravity skills flat --- .changeset/plucky-badgers-sprint.md | 5 +++++ capabilities/antigravity/capability.json | 6 +++--- gsd-core/bin/lib/capability-registry.cjs | 12 ++++++------ src/runtime-artifact-layout.cts | 7 +++++-- tests/install.test.cjs | 18 ++++++++++++++++++ 5 files changed, 37 insertions(+), 11 deletions(-) create mode 100644 .changeset/plucky-badgers-sprint.md diff --git a/.changeset/plucky-badgers-sprint.md b/.changeset/plucky-badgers-sprint.md new file mode 100644 index 000000000..184005fa2 --- /dev/null +++ b/.changeset/plucky-badgers-sprint.md @@ -0,0 +1,5 @@ +--- +type: Fixed +pr: 0 +--- +**Antigravity installs all GSD slash-command skills where AGY can discover them** — concrete skills such as /gsd-progress and /gsd-verify-work now land directly under the Antigravity skills directory instead of router-nested folders. (#1614) diff --git a/capabilities/antigravity/capability.json b/capabilities/antigravity/capability.json index 8ab2bba7f..65694fd35 100644 --- a/capabilities/antigravity/capability.json +++ b/capabilities/antigravity/capability.json @@ -3,7 +3,7 @@ "role": "runtime", "version": "1.6.0-rc.2", "title": "Antigravity", - "description": "Google Antigravity IDE — nested under ~/.gemini/antigravity; probed across 1.x and 2.x layouts; Gemini hook event dialect; nested skill layout; tier-1 support.", + "description": "Google Antigravity IDE — nested under ~/.gemini/antigravity; probed across 1.x and 2.x layouts; Gemini hook event dialect; flat skill layout; tier-1 support.", "tier": "core", "requires": [], "engines": { @@ -31,7 +31,7 @@ "kind": "skills", "destSubpath": "skills", "prefix": "gsd-", - "nesting": "nested", + "nesting": "flat", "recursive": false, "converter": "convertClaudeCommandToAntigravitySkill" } @@ -41,7 +41,7 @@ "kind": "skills", "destSubpath": "skills", "prefix": "gsd-", - "nesting": "nested", + "nesting": "flat", "recursive": false, "converter": "convertClaudeCommandToAntigravitySkill" } diff --git a/gsd-core/bin/lib/capability-registry.cjs b/gsd-core/bin/lib/capability-registry.cjs index 35acc45ea..45e52f2d0 100644 --- a/gsd-core/bin/lib/capability-registry.cjs +++ b/gsd-core/bin/lib/capability-registry.cjs @@ -65,7 +65,7 @@ const capabilities = { "role": "runtime", "version": "1.6.0-rc.2", "title": "Antigravity", - "description": "Google Antigravity IDE — nested under ~/.gemini/antigravity; probed across 1.x and 2.x layouts; Gemini hook event dialect; nested skill layout; tier-1 support.", + "description": "Google Antigravity IDE — nested under ~/.gemini/antigravity; probed across 1.x and 2.x layouts; Gemini hook event dialect; flat skill layout; tier-1 support.", "tier": "core", "requires": [], "engines": { @@ -93,7 +93,7 @@ const capabilities = { "kind": "skills", "destSubpath": "skills", "prefix": "gsd-", - "nesting": "nested", + "nesting": "flat", "recursive": false, "converter": "convertClaudeCommandToAntigravitySkill" } @@ -103,7 +103,7 @@ const capabilities = { "kind": "skills", "destSubpath": "skills", "prefix": "gsd-", - "nesting": "nested", + "nesting": "flat", "recursive": false, "converter": "convertClaudeCommandToAntigravitySkill" } @@ -2723,7 +2723,7 @@ const runtimes = { "role": "runtime", "version": "1.6.0-rc.2", "title": "Antigravity", - "description": "Google Antigravity IDE — nested under ~/.gemini/antigravity; probed across 1.x and 2.x layouts; Gemini hook event dialect; nested skill layout; tier-1 support.", + "description": "Google Antigravity IDE — nested under ~/.gemini/antigravity; probed across 1.x and 2.x layouts; Gemini hook event dialect; flat skill layout; tier-1 support.", "tier": "core", "requires": [], "engines": { @@ -2751,7 +2751,7 @@ const runtimes = { "kind": "skills", "destSubpath": "skills", "prefix": "gsd-", - "nesting": "nested", + "nesting": "flat", "recursive": false, "converter": "convertClaudeCommandToAntigravitySkill" } @@ -2761,7 +2761,7 @@ const runtimes = { "kind": "skills", "destSubpath": "skills", "prefix": "gsd-", - "nesting": "nested", + "nesting": "flat", "recursive": false, "converter": "convertClaudeCommandToAntigravitySkill" } diff --git a/src/runtime-artifact-layout.cts b/src/runtime-artifact-layout.cts index cea8a6b0f..aceb479c9 100644 --- a/src/runtime-artifact-layout.cts +++ b/src/runtime-artifact-layout.cts @@ -368,13 +368,16 @@ function convertedCommandsKind( // augment — https://docs.augmentcode.com/cli/skills (flat single-level) // trae — docs.trae.ai/ide/skills + Trae-AI/TRAE#2253 (flat; nesting errors) // Trae IDE (trae.ai), not trae-agent — see runtime-homes.cts header note -// antigravity— discuss.ai.google.dev/t/more-antigravity-issues/145875 ("will not recursive scan") -// // FLAT (recursive loader → nesting gives no saving): // cursor — https://cursor.com/docs/skills (walks skills root recursively) // opencode — sst/opencode skill/index.ts glob "skills/**/SKILL.md" // kilo — Kilo-Org/kilocode (opencode fork, same ** glob) // +// FLAT (one-level scan, but concrete skills must be directly discoverable): +// antigravity— https://antigravity.google/docs/skills + /docs/cli-plugins +// (skills live at //SKILL.md; AGY does not +// register router-nested concrete skills as slash commands) +// // FLAT (reverted from nested — nested skills not discoverable by Skill tool, #924): // claude — https://code.claude.com/docs/en/skills + anthropics/claude-code#28266 // (one-level scan under ~/.claude/skills — but Skill-tool errors on unknown diff --git a/tests/install.test.cjs b/tests/install.test.cjs index f68b3e817..b27f33c6e 100644 --- a/tests/install.test.cjs +++ b/tests/install.test.cjs @@ -1167,6 +1167,24 @@ describe('antigravity local install writes to .agents/ canonical dir (#791)', () assert.ok(fs.existsSync(firstSkill), `SKILL.md must exist at ${firstSkill}`); }); + test('install writes concrete skills at the immediate level AGY scans', () => { + install(false, 'antigravity'); + const skillsDir = path.join(tmpDir, '.agents', 'skills'); + + assert.ok( + fs.existsSync(path.join(skillsDir, 'gsd-progress', 'SKILL.md')), + 'AGY scans immediate skill folders, so /gsd-progress must be installed at .agents/skills/gsd-progress/SKILL.md', + ); + assert.ok( + fs.existsSync(path.join(skillsDir, 'gsd-verify-work', 'SKILL.md')), + 'AGY scans immediate skill folders, so /gsd-verify-work must be installed at .agents/skills/gsd-verify-work/SKILL.md', + ); + assert.ok( + !fs.existsSync(path.join(skillsDir, 'gsd-ns-workflow', 'skills', 'progress', 'SKILL.md')), + 'Antigravity must not rely on router-nested concrete skills that AGY does not discover', + ); + }); + test('installed agent files reference .agents/ not ~/.claude/ or bare .agent/', () => { // NOTE: skill content is intentionally NOT asserted here. The installer calls // convertClaudeCommandToAntigravitySkill(content, skillName, runtime, cmdNames) From 6db580d694593e03f4a03b7f92d6f78350fdc944 Mon Sep 17 00:00:00 2001 From: Tom Boucher Date: Tue, 23 Jun 2026 10:22:57 -0400 Subject: [PATCH 2/3] chore(#1614): backfill changeset PR number --- .changeset/plucky-badgers-sprint.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/plucky-badgers-sprint.md b/.changeset/plucky-badgers-sprint.md index 184005fa2..29cd19efd 100644 --- a/.changeset/plucky-badgers-sprint.md +++ b/.changeset/plucky-badgers-sprint.md @@ -1,5 +1,5 @@ --- type: Fixed -pr: 0 +pr: 1616 --- **Antigravity installs all GSD slash-command skills where AGY can discover them** — concrete skills such as /gsd-progress and /gsd-verify-work now land directly under the Antigravity skills directory instead of router-nested folders. (#1614) From ce7fffffc4f9ef4464942d5c157503deb855354b Mon Sep 17 00:00:00 2001 From: Tom Boucher Date: Tue, 23 Jun 2026 10:40:55 -0400 Subject: [PATCH 3/3] test(#1614): classify Antigravity skills as flat --- tests/install-nested-layout.test.cjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/install-nested-layout.test.cjs b/tests/install-nested-layout.test.cjs index f3f3a53f0..f9e23f70e 100644 --- a/tests/install-nested-layout.test.cjs +++ b/tests/install-nested-layout.test.cjs @@ -33,13 +33,12 @@ const { COMMANDS_GSD, ROUTER_STEMS, routerChildren } = require('./helpers/nested const NEST = [ // Claude reverted to flat (#924: nested layout breaks Skill-tool discovery on Claude Code). - // Only the 6 runtimes below keep the nested layout. + // Only the 5 runtimes below keep the nested layout. { runtime: 'cline', scope: 'global', skillsSub: 'skills', prefix: 'gsd-' }, { runtime: 'qwen', scope: 'global', skillsSub: 'skills', prefix: 'gsd-' }, { runtime: 'hermes', scope: 'global', skillsSub: 'skills/gsd', prefix: 'gsd-' }, // #947: restored canonical prefix { runtime: 'augment', scope: 'global', skillsSub: 'skills', prefix: 'gsd-' }, { runtime: 'trae', scope: 'global', skillsSub: 'skills', prefix: 'gsd-' }, - { runtime: 'antigravity', scope: 'global', skillsSub: 'skills', prefix: 'gsd-' }, ]; const FLAT = [ @@ -53,6 +52,7 @@ const FLAT = [ { runtime: 'codebuddy', scope: 'global', skillsSub: 'skills' }, { runtime: 'opencode', scope: 'global', skillsSub: 'skills' }, { runtime: 'kilo', scope: 'global', skillsSub: 'skills' }, + { runtime: 'antigravity', scope: 'global', skillsSub: 'skills' }, ]; // ---------------------------------------------------------------------------