diff --git a/README.md b/README.md index 13273a7..ecea617 100644 --- a/README.md +++ b/README.md @@ -74,6 +74,8 @@ This copies skills into: - `.github/skills/` for VS Code / GitHub Copilot - `.claude/skills/` for Claude Code (project-level) - `.cursor/skills/` for Cursor (project-level) +- `.agent/skills/` for Antigravity +- `.gemini/skills/` for Gemini CLI ### Install globally for Cursor diff --git a/shared/scripts/skillpack-build.mjs b/shared/scripts/skillpack-build.mjs index a5841de..4577ab7 100644 --- a/shared/scripts/skillpack-build.mjs +++ b/shared/scripts/skillpack-build.mjs @@ -5,16 +5,18 @@ function usage() { process.stderr.write( [ "Usage:", - " node shared/scripts/skillpack-build.mjs [--out=dist] [--targets=codex,vscode,claude,cursor] [--skills=skill1,skill2] [--clean]", + " node shared/scripts/skillpack-build.mjs [--out=dist] [--targets=codex,vscode,claude,cursor,antigravity,gemini] [--skills=skill1,skill2] [--clean]", "", "Outputs:", " - /codex/.codex/skills//SKILL.md", " - /vscode/.github/skills//SKILL.md", " - /claude/.claude/skills//SKILL.md", " - /cursor/.cursor/skills//SKILL.md", + " - /antigravity/.agent/skills//SKILL.md", + " - /gemini/.gemini/skills//SKILL.md", "", "Options:", - " --targets Comma-separated list of targets (codex, vscode, claude, cursor). Default: codex,vscode,claude,cursor", + " --targets Comma-separated list of targets (codex, vscode, claude, cursor, antigravity, gemini). Default: codex,vscode,claude,cursor,antigravity,gemini", " --skills Comma-separated list of skill names to build. Default: all skills", " --clean Remove target directories before building", "", @@ -26,7 +28,7 @@ function usage() { } function parseArgs(argv) { - const args = { out: "dist", targets: ["codex", "vscode", "claude", "cursor"], skills: [], clean: false }; + const args = { out: "dist", targets: ["codex", "vscode", "claude", "cursor", "antigravity", "gemini"], skills: [], clean: false }; for (const a of argv) { if (a === "--help" || a === "-h") args.help = true; else if (a === "--clean") args.clean = true; @@ -101,6 +103,8 @@ function buildTarget({ repoRoot, outDir, target, skillDirs }) { vscode: path.join(outDir, "vscode", ".github", "skills"), claude: path.join(outDir, "claude", ".claude", "skills"), cursor: path.join(outDir, "cursor", ".cursor", "skills"), + antigravity: path.join(outDir, "antigravity", ".agent", "skills"), + gemini: path.join(outDir, "gemini", ".gemini", "skills"), }; const destSkillsRoot = rootByTarget[target]; assert(destSkillsRoot, `Unknown target: ${target}`); @@ -117,7 +121,7 @@ function buildTarget({ repoRoot, outDir, target, skillDirs }) { process.stdout.write(`OK: built ${target} skillpack at ${rel}\n`); } -const VALID_TARGETS = ["codex", "vscode", "claude", "cursor"]; +const VALID_TARGETS = ["codex", "vscode", "claude", "cursor", "antigravity", "gemini"]; function main() { const args = parseArgs(process.argv.slice(2)); diff --git a/shared/scripts/skillpack-install.mjs b/shared/scripts/skillpack-install.mjs index e9411aa..eca0b57 100644 --- a/shared/scripts/skillpack-install.mjs +++ b/shared/scripts/skillpack-install.mjs @@ -11,7 +11,7 @@ function usage() { "Options:", " --dest= Destination repo root (required, unless using --global)", " --from= Source directory (default: dist)", - " --targets= Comma-separated targets: codex, vscode, claude, claude-global, cursor, cursor-global (default: codex,vscode)", + " --targets= Comma-separated targets: codex, vscode, claude, claude-global, cursor, cursor-global, antigravity, gemini (default: codex,vscode)", " --skills= Comma-separated skill names to install (default: all)", " --mode= 'replace' (default) or 'merge'", " --global Shorthand for --targets=claude-global (installs to ~/.claude/skills)", @@ -25,6 +25,8 @@ function usage() { " claude-global Install to ~/.claude/skills/ (user-level, ignores --dest)", " cursor Install to /.cursor/skills/", " cursor-global Install to ~/.cursor/skills/ (user-level, ignores --dest)", + " antigravity Install to /.agent/skills/", + " gemini Install to /.gemini/skills/", "", "Examples:", " # Build and install to a WordPress project", @@ -133,7 +135,7 @@ function listSkillDirs(skillsRoot) { .filter((d) => fs.existsSync(path.join(d, "SKILL.md"))); } -const VALID_TARGETS = ["codex", "vscode", "claude", "claude-global", "cursor", "cursor-global"]; +const VALID_TARGETS = ["codex", "vscode", "claude", "claude-global", "cursor", "cursor-global", "antigravity", "gemini"]; // Map target to source subdirectory in dist function getSourceDir(fromDir, target) { @@ -145,6 +147,8 @@ function getSourceDir(fromDir, target) { vscode: path.join(fromDir, "vscode", ".github", "skills"), claude: path.join(fromDir, "claude", ".claude", "skills"), cursor: path.join(fromDir, "cursor", ".cursor", "skills"), + antigravity: path.join(fromDir, "antigravity", ".agent", "skills"), + gemini: path.join(fromDir, "gemini", ".gemini", "skills"), }; return targetDirMap[sourceTarget]; } @@ -165,6 +169,8 @@ function getDestDir(destRepoRoot, target) { vscode: path.join(destRepoRoot, ".github", "skills"), claude: path.join(destRepoRoot, ".claude", "skills"), cursor: path.join(destRepoRoot, ".cursor", "skills"), + antigravity: path.join(destRepoRoot, ".agent", "skills"), + gemini: path.join(destRepoRoot, ".gemini", "skills"), }; return destDirMap[target]; } @@ -220,7 +226,7 @@ function installTarget({ fromDir, destRepoRoot, target, skillsFilter, mode, dryR function listAvailableSkills(fromDir) { // Check all possible target sources - const sources = ["codex", "vscode", "claude", "cursor"] + const sources = ["codex", "vscode", "claude", "cursor", "antigravity", "gemini"] .map((t) => getSourceDir(fromDir, t)) .filter((p) => fs.existsSync(p));