Merge pull request #1616 from open-gsd/fix/1614-antigravity-flat-skills
fix(#1614): install Antigravity skills flat
This commit is contained in:
5
.changeset/plucky-badgers-sprint.md
Normal file
5
.changeset/plucky-badgers-sprint.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
type: Fixed
|
||||
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)
|
||||
@@ -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"
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
|
||||
@@ -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 <skills-dir>/<skill-folder>/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
|
||||
|
||||
@@ -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' },
|
||||
];
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user