Skip to content

feat: Adds native Antigravity support - #535

Closed
mhenke wants to merge 12 commits into
obra:mainfrom
mhenke:feature/antigravity-support
Closed

feat: Adds native Antigravity support#535
mhenke wants to merge 12 commits into
obra:mainfrom
mhenke:feature/antigravity-support

Conversation

@mhenke

@mhenke mhenke commented Feb 23, 2026

Copy link
Copy Markdown

Closes #267, Closes #270, Related: #128

mhenke and others added 7 commits February 20, 2026 07:50
- Add gemini-extension.json manifest for 'gemini extensions install'
- Add GEMINI.md context file for auto-activating using-superpowers skill
- Add TOML command files (brainstorm, write-plan, execute-plan)
- Update docs/README.gemini.md with extension install as primary method
- Update README.md with one-liner install command
- Move GEMINI.md to .gemini/GEMINI.md (consistent with other platforms)
- Add .gemini/install.sh mirroring .qwen/install.sh (hub symlink pattern)
- Add .gemini/INSTALL.md with installation instructions
- Update gemini-extension.json contextFileName to .gemini/GEMINI.md
- Rewrite docs/README.gemini.md: install script is primary, extension is alternative
- Remove TOML slash commands in favour of native activate_skill (Gemini CLI v0.24.0+)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Adds Superpowers support for Antigravity, the agentic AI coding
assistant by Google DeepMind. Antigravity shares ~/.gemini/ with
Gemini CLI, so the same install infrastructure works for both.

Changes:
- .gemini/GEMINI.md: Updated context block with Antigravity tool
  mappings (view_file, run_command, task_boundary, etc.)
- .gemini/INSTALL.md: Antigravity-specific installation docs
- .gemini/install.sh: Updated context block and branding for
  Antigravity / Gemini CLI
- antigravity-extension.json: Extension manifest (v4.3.1)
- docs/README.antigravity.md: Detailed docs with tool mapping table,
  install/uninstall instructions, and troubleshooting
- README.md: Added Antigravity section to Installation heading

Closes obra#267, Closes obra#270
Related: obra#128
Critical fixes:
- Fix agent path bug: REPO_AGENTS_DIR now correctly resolves to
  $REPO_DIR/agents (repo root) instead of the .gemini/ subdirectory
  which was empty and caused agents to be silently skipped
- Add Antigravity-specific skill path: installer now also symlinks
  skills into ~/.gemini/antigravity/skills/ when Antigravity is
  detected (in addition to ~/.gemini/skills/ for Gemini CLI)

Minor fixes:
- Expand tool mapping in GEMINI.md, install.sh, INSTALL.md and
  docs/README.antigravity.md: add list_dir, view_file_outline,
  view_code_item, generate_image, notify_user, and mcp_* tools
- Bump gemini-extension.json version from 4.3.0 to 4.3.1
- Update docs/README.gemini.md to mention Antigravity cross-compat
Copilot AI review requested due to automatic review settings February 23, 2026 16:03
- Fix agent path bug: correctly locate agents in repo root
- Update context block: use better tool names for Gemini CLI (task.md, plan.md, search_file_content, etc.)
@mhenke

mhenke commented Feb 23, 2026

Copy link
Copy Markdown
Author

@coderabbitai @copilot please review this PR for Antigravity support.

@coderabbitai

coderabbitai Bot commented Feb 23, 2026

Copy link
Copy Markdown

@mhenke: I'll review this PR for Antigravity support. Let me analyze the changes that add native Antigravity support and check how they address issues #267, #270, and relate to #128.

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai

coderabbitai Bot commented Feb 23, 2026

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

Adds Antigravity and Gemini CLI support: installer script, GEMINI.md context injection, extension manifest, docs, agent/subagent definitions, and skill updates to enable symlinked skill/agent discovery and Antigravity-specific workflows.

Changes

Cohort / File(s) Summary
Installation & Integration
\.gemini/GEMINI.md, \.gemini/INSTALL.md, \.gemini/install.sh, antigravity-extension.json
New installer script, idempotent GEMINI.md context injection, symlink-based linking of repo skills/agents into ~/.gemini/..., and an Antigravity extension manifest. Cross-platform linking fallbacks and user messaging included.
Platform Docs & Guides
docs/README.gemini.md, docs/README.antigravity.md, docs/README.codex.md, README.md, RELEASE-NOTES.md
Adds detailed installation/usage docs for Gemini CLI and Antigravity, updates quick-install URLs to v4.3.1, documents tool mappings, uninstall/update flows, and release notes describing multi-assistant support and Windows hook fixes.
Agent / Subagent Definitions
agents/spec-reviewer.md, agents/spec-reviewer-prompt-template.md, agents/implementer.md, agents/implementer-prompt-template.md, agents/code-reviewer-prompt-template.md
Adds spec-reviewer, implementer, and code-reviewer subagent specs and prompt templates defining workflows, tools, reporting formats, and dispatch expectations for Antigravity.
Skill Content & Examples
skills/brainstorming/SKILL.md, skills/dispatching-parallel-agents/SKILL.md, skills/requesting-code-review/SKILL.md, skills/using-superpowers/SKILL.md, skills/writing-plans/SKILL.md, skills/writing-skills/SKILL.md
Updates descriptions, adds Antigravity-specific examples (view_file/activate_skill), parallel-dispatch example, expanded code-review templates/placeholders, and minor wording improvements.
Agents Install Templates / Assets
agents/... (new files above)
New agent prompt templates and docs added as non-executable markdown artifacts to support dispatch workflows.

Sequence Diagram(s)

mermaid
sequenceDiagram
participant User
participant Installer as .gemini/install.sh
participant Repo as git-repo (skills/ agents/)
participant FS as Filesystem (~/.gemini)
participant Antigravity
User->>Installer: run installer
Installer->>Repo: verify skills/ agents/ exist
Installer->>FS: create ~/.gemini, ~/.gemini/skills, ~/.gemini/agents
Installer->>Repo: create symlinks -> ~/.gemini/skills/agents (link logic with fallbacks)
Installer->>FS: idempotently inject SUPERPOWERS context into GEMINI.md
Installer->>User: show status and restart guidance
User->>Antigravity: start Assistant
Antigravity->>FS: discover skills in ~/.gemini/skills via SKILL.md
Antigravity->>User: available skills / invoke via view_file

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~22 minutes

Possibly related PRs

Poem

🐇 I hopped into .gemini tonight,
Symlinks snug, context set just right,
Agents wake, skills take flight,
Antigravity hums with new delight —
Hooray! code buddies, ready to write.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title 'feat: Adds native Antigravity support' directly summarizes the main change, which is introducing Antigravity support as a new feature.
Description check ✅ Passed The description references closed issues (#267, #270) directly related to Antigravity support and provides clear context about the PR's purpose.
Linked Issues check ✅ Passed The PR comprehensively addresses both linked issues: it adds native Antigravity integration (#267) and provides extensive documentation and installation guidance (#270).
Out of Scope Changes check ✅ Passed All changes are directly related to enabling Antigravity support: documentation, installation scripts, agent templates, and skill updates are aligned with the stated objectives.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 5

> [!CAUTION]

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
README.md (1)

29-29: ⚠️ Potential issue | 🟡 Minor

Platform note is now incomplete after adding Gemini CLI and Antigravity.

Line 29 says "Claude Code or Cursor have built-in plugin marketplaces. Codex and OpenCode require manual setup." but the two newly added platforms are neither mentioned nor categorized, leaving the note misleading.

📝 Proposed fix
-**Note:** Installation differs by platform. Claude Code or Cursor have built-in plugin marketplaces. Codex and OpenCode require manual setup.
+**Note:** Installation differs by platform. Claude Code or Cursor have built-in plugin marketplaces. Gemini CLI supports native extension install. Antigravity, Codex, and OpenCode require manual setup.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@README.md` at line 29, Update the platform note sentence that currently reads
"Claude Code or Cursor have built-in plugin marketplaces. Codex and OpenCode
require manual setup." to include the two new platforms (Gemini CLI and
Antigravity) and their correct categorization: indicate which platforms have
built-in plugin marketplaces (e.g., Claude Code, Cursor, and specify if Gemini
CLI does) and which require manual setup (e.g., Codex, OpenCode, and Antigravity
if applicable). Edit the README.md sentence identified by the phrase "Claude
Code or Cursor have built-in plugin marketplaces. Codex and OpenCode require
manual setup." to produce a single clear line that lists all five platforms and
their setup method.
🧹 Nitpick comments (4)
docs/README.gemini.md (2)

8-19: Add a Prerequisites section stating the minimum Gemini CLI version.

The v0.24.0+ version requirement is mentioned only in the Troubleshooting section (line 69), which users typically don't read before installing. Move it to a Prerequisites section near the top for better discoverability.

📝 Proposed addition (after line 7)
+## Prerequisites
+
+- Git
+- Gemini CLI v0.24.0 or later (`gemini --version` to check) — required for native Agent Skills support
+
 ## Quick Install
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/README.gemini.md` around lines 8 - 19, Add a new "Prerequisites" section
near the top of README.gemini.md (e.g., immediately before or after the "Quick
Install" heading) that clearly states the minimum required Gemini CLI version
"v0.24.0+" and any minimal OS/permissions notes; update or reference the
existing Troubleshooting note to avoid duplication (keep the canonical version
string in one place). Ensure the section is concise and prominently placed so
users see the version requirement before attempting installation.

58-61: Uninstall step is imprecise — specify the exact block markers.

Line 60 says "remove the SUPERPOWERS-CONTEXT block" but doesn't give the exact delimiters. The companion .gemini/INSTALL.md specifies them precisely. Keep the two docs consistent.

📝 Proposed fix
-# Edit ~/.gemini/GEMINI.md and remove the SUPERPOWERS-CONTEXT block
+# Edit ~/.gemini/GEMINI.md and remove everything between
+# <!-- SUPERPOWERS-CONTEXT-START --> and <!-- SUPERPOWERS-CONTEXT-END --> (inclusive)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/README.gemini.md` around lines 58 - 61, Update the uninstall instruction
in README.gemini.md to explicitly specify the exact block delimiters to remove
from ~/.gemini/GEMINI.md (use the same START and END markers as in
.gemini/INSTALL.md), e.g., reference the opening marker
"SUPERPOWERS-CONTEXT-BEGIN" and closing marker "SUPERPOWERS-CONTEXT-END" (or the
exact names used in INSTALL.md) and instruct users to remove the entire block
between those markers; ensure the wording in README.gemini.md matches the
delimiters and phrasing used in .gemini/INSTALL.md for consistency.
.gemini/install.sh (2)

38-73: Duplicated skill-linking logic — extract a helper function.

The skill-linking body (lines 38–73) is almost identical to the Antigravity-specific skill-linking block (lines 125–159), differing only in the target directory and a couple of warning strings. Any future change to the linking or conflict-detection logic (e.g., the realpath/readlink fallback) must be kept in sync manually.

♻️ Suggested refactor (skeleton)
+# Link skills from $1 (source glob base) into $2 (target dir)
+link_skills_into() {
+    local src_dir="$1" target_dir="$2"
+    mkdir -p "$target_dir"
+    echo "Linking skills from $src_dir to $target_dir..."
+    for skill_path in "$src_dir"/*/; do
+        [ -d "$skill_path" ] || continue
+        local skill_name target_path link_target
+        skill_name=$(basename "$skill_path")
+        skill_path="${skill_path%/}"
+        target_path="$target_dir/$skill_name"
+
+        if [ -e "$target_path" ] || [ -L "$target_path" ]; then
+            if [ -L "$target_path" ]; then
+                link_target="$(realpath "$target_path" 2>/dev/null || readlink "$target_path")"
+                if [[ "$link_target" == "$REPO_DIR"* ]]; then
+                    rm "$target_path"
+                else
+                    echo "  ⚠ $skill_name points elsewhere. Skipping."
+                    continue
+                fi
+            else
+                echo "  ⚠ $target_path exists and is not a symlink. Skipping."
+                continue
+            fi
+        fi
+
+        if ln -sr "$skill_path" "$target_path" 2>/dev/null; then :
+        elif command -v python3 >/dev/null 2>&1; then
+            rel_path="$(python3 -c "import os,sys; print(os.path.relpath(sys.argv[1], sys.argv[2]))" "$skill_path" "$target_dir")"
+            ln -s "$rel_path" "$target_path"
+        else
+            echo "  ⚠ Warning: Using absolute path (less portable)."
+            ln -s "$skill_path" "$target_path"
+        fi
+        echo "  ✓ $skill_name"
+    done
+}
+
 # --- Link skills individually (hub pattern) ---
-echo "Linking skills from $REPO_SKILLS_DIR to $SKILLS_DIR..."
-for skill_path in "$REPO_SKILLS_DIR"/*/; do
-    ...
-done
+link_skills_into "$REPO_SKILLS_DIR" "$SKILLS_DIR"

 # --- Also link skills into Antigravity-specific path ---
 ANTIGRAVITY_SKILLS_DIR="$HOME/.gemini/antigravity/skills"
 if [ -d "$HOME/.gemini/antigravity" ]; then
-    mkdir -p "$ANTIGRAVITY_SKILLS_DIR"
-    echo "Linking skills into Antigravity path $ANTIGRAVITY_SKILLS_DIR..."
-    for skill_path in "$REPO_SKILLS_DIR"/*/; do
-        ...
-    done
+    link_skills_into "$REPO_SKILLS_DIR" "$ANTIGRAVITY_SKILLS_DIR"
 fi
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.gemini/install.sh around lines 38 - 73, The duplicate skill-linking block
(loop over skill_path, computing skill_name/target_path, checking existing
symlink via link_target, and creating a relative symlink using ln -sr or python3
fallback) should be extracted into a reusable helper function (e.g., link_skill
or create_skill_symlink) that accepts the source directory and destination base
(currently using variables like skill_path, SKILLS_DIR, target_path) and
encapsulates the conflict-detection (realpath/readlink and link_target check),
the GNU ln -sr attempt, the python3 relpath fallback, and the absolute-path
fallback + messages; replace both the current block and the Antigravity-specific
block with calls to this helper, preserving existing warning strings and
exit/continue behavior.

120-159: Antigravity-specific skills are silently skipped if Antigravity is installed after Superpowers.

The guard if [ -d "$HOME/.gemini/antigravity" ] means a user who installs Antigravity after running this script for the first time will not have skills linked into ~/.gemini/antigravity/skills/. The existing docs say re-running is safe but don't call out when it is necessary. Consider adding a note to docs/README.antigravity.md (e.g., under Troubleshooting) that re-running the installer is required when Antigravity is installed after Superpowers.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.gemini/install.sh around lines 120 - 159, The installer currently skips
linking into ANTIGRAVITY_SKILLS_DIR when Antigravity isn't present because of
the guard if [ -d "$HOME/.gemini/antigravity" ], which means users who install
Antigravity after running the script won't get skills linked; add a short
Troubleshooting note to docs/README.antigravity.md (under a “Troubleshooting” or
“Installation” section) stating that if Antigravity is installed after running
the Superpowers installer, the installer must be re-run to populate
~/.gemini/antigravity/skills/ (suggest including the exact re-run command and
referencing the script name), and optionally mention the script’s echo message
("Antigravity not detected at ~/.gemini/antigravity — skipping
Antigravity-specific skill path.") so users can recognize why linking was
skipped.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.gemini/GEMINI.md:
- Around line 1-6: The pre-context enforcement line telling users to read
`using-superpowers` is outside the `<!-- SUPERPOWERS-CONTEXT-START/END -->`
block so `install.sh` never injects it into ~/.gemini/GEMINI.md; fix by either
moving that directive inside the `<!-- SUPERPOWERS-CONTEXT-START/END -->` block
in the GEMINI.md template or update `install.sh` to explicitly prepend the
required "MUST read `using-superpowers` BEFORE your first response" line into
~/.gemini/GEMINI.md before it writes the context block, ensuring the enforcement
text and the discovery context are always present for global installs.

In @.gemini/INSTALL.md:
- Line 3: Replace the incorrect Antigravity URL string "https://deepmind.google"
with the correct product URL "https://antigravity.google/download" in the
INSTALL.md entry; locate the text containing "Enable Superpowers skills in
[Antigravity](https://deepmind.google)" and update the link target to
"https://antigravity.google/download" so the markdown link points to the proper
Antigravity download page.
- Around line 104-124: The Uninstalling section misses removing
Antigravity-specific skill symlinks; update the "Uninstalling" block by
inserting a new step after the existing skill symlink removal (step 1) that runs
the equivalent removal for Antigravity's global skill directory
(~/.gemini/antigravity/skills) — i.e., add a step titled like "Remove the
Antigravity-specific skill symlinks (if applicable)" that deletes symlinks
matching '*/superpowers/skills/*' in ~/.gemini/antigravity/skills so dangling
Antigravity symlinks are cleaned up before the agent symlink removal step.

In `@docs/README.antigravity.md`:
- Around line 75-78: The uninstall find command currently searches for symlinks
pointing at '*/superpowers/.gemini/agents/*' which never matches how install.sh
creates symlinks (REPO_AGENTS_DIR="$REPO_DIR/agents" so targets are
…/superpowers/agents/<name>.md); update the find -lname pattern to match
'*/superpowers/agents/*' (so the command will locate and delete the symlinks
created by install.sh) and keep the rest of the find invocation unchanged.
- Line 3: Replace the incorrect Antigravity URL in the README line containing
the Markdown link "[Antigravity](https://deepmind.google)" so it points to the
official product page; change the URL from "https://deepmind.google" to
"https://antigravity.google" and ensure the Markdown link text remains unchanged
(look for the bracketed "Antigravity" link in docs/README.antigravity.md).

---

Outside diff comments:
In `@README.md`:
- Line 29: Update the platform note sentence that currently reads "Claude Code
or Cursor have built-in plugin marketplaces. Codex and OpenCode require manual
setup." to include the two new platforms (Gemini CLI and Antigravity) and their
correct categorization: indicate which platforms have built-in plugin
marketplaces (e.g., Claude Code, Cursor, and specify if Gemini CLI does) and
which require manual setup (e.g., Codex, OpenCode, and Antigravity if
applicable). Edit the README.md sentence identified by the phrase "Claude Code
or Cursor have built-in plugin marketplaces. Codex and OpenCode require manual
setup." to produce a single clear line that lists all five platforms and their
setup method.

---

Nitpick comments:
In @.gemini/install.sh:
- Around line 38-73: The duplicate skill-linking block (loop over skill_path,
computing skill_name/target_path, checking existing symlink via link_target, and
creating a relative symlink using ln -sr or python3 fallback) should be
extracted into a reusable helper function (e.g., link_skill or
create_skill_symlink) that accepts the source directory and destination base
(currently using variables like skill_path, SKILLS_DIR, target_path) and
encapsulates the conflict-detection (realpath/readlink and link_target check),
the GNU ln -sr attempt, the python3 relpath fallback, and the absolute-path
fallback + messages; replace both the current block and the Antigravity-specific
block with calls to this helper, preserving existing warning strings and
exit/continue behavior.
- Around line 120-159: The installer currently skips linking into
ANTIGRAVITY_SKILLS_DIR when Antigravity isn't present because of the guard if [
-d "$HOME/.gemini/antigravity" ], which means users who install Antigravity
after running the script won't get skills linked; add a short Troubleshooting
note to docs/README.antigravity.md (under a “Troubleshooting” or “Installation”
section) stating that if Antigravity is installed after running the Superpowers
installer, the installer must be re-run to populate
~/.gemini/antigravity/skills/ (suggest including the exact re-run command and
referencing the script name), and optionally mention the script’s echo message
("Antigravity not detected at ~/.gemini/antigravity — skipping
Antigravity-specific skill path.") so users can recognize why linking was
skipped.

In `@docs/README.gemini.md`:
- Around line 8-19: Add a new "Prerequisites" section near the top of
README.gemini.md (e.g., immediately before or after the "Quick Install" heading)
that clearly states the minimum required Gemini CLI version "v0.24.0+" and any
minimal OS/permissions notes; update or reference the existing Troubleshooting
note to avoid duplication (keep the canonical version string in one place).
Ensure the section is concise and prominently placed so users see the version
requirement before attempting installation.
- Around line 58-61: Update the uninstall instruction in README.gemini.md to
explicitly specify the exact block delimiters to remove from ~/.gemini/GEMINI.md
(use the same START and END markers as in .gemini/INSTALL.md), e.g., reference
the opening marker "SUPERPOWERS-CONTEXT-BEGIN" and closing marker
"SUPERPOWERS-CONTEXT-END" (or the exact names used in INSTALL.md) and instruct
users to remove the entire block between those markers; ensure the wording in
README.gemini.md matches the delimiters and phrasing used in .gemini/INSTALL.md
for consistency.

ℹ️ Review info

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between e4a2375 and b56f2a7.

📒 Files selected for processing (11)
  • .gemini/GEMINI.md
  • .gemini/INSTALL.md
  • .gemini/install.sh
  • README.md
  • antigravity-extension.json
  • commands/brainstorm.toml
  • commands/execute-plan.toml
  • commands/write-plan.toml
  • docs/README.antigravity.md
  • docs/README.gemini.md
  • gemini-extension.json

Comment thread .gemini/GEMINI.md Outdated
Comment on lines +1 to +6
# Superpowers

You have the Superpowers skills library installed. Before taking any action, you MUST read the `using-superpowers` skill to learn how to use the skills system properly.

This is not optional. Read `using-superpowers` BEFORE your first response in every conversation.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Pre-context directive is not injected into ~/.gemini/GEMINI.md by the install script.

The critical "MUST read using-superpowers BEFORE your first response" instruction (lines 1–6) sits outside the <!-- SUPERPOWERS-CONTEXT-START/END --> markers, so install.sh never writes it to ~/.gemini/GEMINI.md. Users relying on the global install (the primary path) will have the discovery context block but not the per-conversation enforcement mandate. Consider either moving this directive inside the markers, or making install.sh prepend it separately before injecting the context block.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.gemini/GEMINI.md around lines 1 - 6, The pre-context enforcement line
telling users to read `using-superpowers` is outside the `<!--
SUPERPOWERS-CONTEXT-START/END -->` block so `install.sh` never injects it into
~/.gemini/GEMINI.md; fix by either moving that directive inside the `<!--
SUPERPOWERS-CONTEXT-START/END -->` block in the GEMINI.md template or update
`install.sh` to explicitly prepend the required "MUST read `using-superpowers`
BEFORE your first response" line into ~/.gemini/GEMINI.md before it writes the
context block, ensuring the enforcement text and the discovery context are
always present for global installs.

Comment thread .gemini/INSTALL.md Outdated
Comment thread .gemini/INSTALL.md
Comment thread docs/README.antigravity.md Outdated
@@ -0,0 +1,107 @@
# Superpowers for Antigravity

Guide for using Superpowers with [Antigravity](https://deepmind.google), the agentic AI coding assistant by Google DeepMind.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Update the Antigravity link URL.

The official download and homepage for Antigravity is antigravity.googlehttps://deepmind.google points to Google DeepMind's general website, not the Antigravity product page.

📝 Proposed fix
-Guide for using Superpowers with [Antigravity](https://deepmind.google), the agentic AI coding assistant by Google DeepMind.
+Guide for using Superpowers with [Antigravity](https://antigravity.google), the agentic AI coding assistant by Google DeepMind.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
Guide for using Superpowers with [Antigravity](https://deepmind.google), the agentic AI coding assistant by Google DeepMind.
Guide for using Superpowers with [Antigravity](https://antigravity.google), the agentic AI coding assistant by Google DeepMind.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/README.antigravity.md` at line 3, Replace the incorrect Antigravity URL
in the README line containing the Markdown link
"[Antigravity](https://deepmind.google)" so it points to the official product
page; change the URL from "https://deepmind.google" to
"https://antigravity.google" and ensure the Markdown link text remains unchanged
(look for the bracketed "Antigravity" link in docs/README.antigravity.md).

Comment thread docs/README.antigravity.md Outdated

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This pull request adds support for "Antigravity" (described as an AI coding assistant by Google DeepMind) and Gemini CLI. The PR creates installation scripts, documentation, and extension manifests to enable superpowers skills in these platforms.

Changes:

  • Adds extension manifests (gemini-extension.json, antigravity-extension.json) for extension-based installation
  • Creates comprehensive documentation for both platforms (docs/README.gemini.md, docs/README.antigravity.md, .gemini/INSTALL.md)
  • Implements installation script (.gemini/install.sh) that symlinks skills and agents, and injects context into ~/.gemini/GEMINI.md
  • Adds TOML command definitions for Gemini/Antigravity platforms
  • Updates main README.md with installation instructions for both platforms

Reviewed changes

Copilot reviewed 11 out of 11 changed files in this pull request and generated 21 comments.

Show a summary per file
File Description
gemini-extension.json Extension manifest for Gemini CLI with metadata and context file reference
antigravity-extension.json Extension manifest for Antigravity with metadata and context file reference
.gemini/GEMINI.md Context file with skill discovery instructions and tool mapping from Claude Code to Antigravity equivalents
.gemini/INSTALL.md Detailed installation guide for Antigravity including prerequisites, installation steps, usage, and troubleshooting
.gemini/install.sh Bash installation script that creates symlinks for skills and agents, handles portability, and injects context blocks
docs/README.gemini.md Documentation for Gemini CLI integration with quick install, extension install, and usage instructions
docs/README.antigravity.md Documentation for Antigravity integration with installation, tool mapping, and troubleshooting guidance
commands/write-plan.toml TOML command definition for activating the writing-plans skill
commands/execute-plan.toml TOML command definition for activating the executing-plans skill
commands/brainstorm.toml TOML command definition for activating the brainstorming skill
README.md Adds installation sections for both Gemini CLI and Antigravity with links to detailed docs

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread commands/write-plan.toml Outdated
@@ -0,0 +1,3 @@
description = "Create detailed implementation plan with bite-sized tasks"

prompt = "Activate the writing-plans skill and follow it exactly as presented to you."

Copilot AI Feb 23, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The prompt text "Activate the writing-plans skill and follow it exactly as presented to you." is inconsistent with the existing pattern in commands/write-plan.md which uses "Invoke the superpowers:writing-plans skill and follow it exactly as presented to you."

The existing pattern uses:

  1. "Invoke" instead of "Activate"
  2. Includes the "superpowers:" namespace prefix

This inconsistency could cause confusion about the correct way to reference skills.

Suggested change
prompt = "Activate the writing-plans skill and follow it exactly as presented to you."
prompt = "Invoke the superpowers:writing-plans skill and follow it exactly as presented to you."

Copilot uses AI. Check for mistakes.
Comment thread commands/brainstorm.toml Outdated
@@ -0,0 +1,3 @@
description = "You MUST use this before any creative work - creating features, building components, adding functionality, or modifying behavior. Explores requirements and design before implementation."

Copilot AI Feb 23, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The description states "You MUST use this before any creative work" which is inconsistent with the existing commands/brainstorm.md file that uses the same wording. However, in the context of a TOML command file for Gemini/Antigravity, this prescriptive language may not be appropriate or enforceable, since (per issue #128) automatic skill triggering doesn't work.

Consider revising to be more descriptive rather than prescriptive, such as "Use this before creative work to explore requirements and design".

Suggested change
description = "You MUST use this before any creative work - creating features, building components, adding functionality, or modifying behavior. Explores requirements and design before implementation."
description = "Use this before creative work to explore requirements and design, including creating features, building components, adding functionality, or modifying behavior."

Copilot uses AI. Check for mistakes.
{
"name": "superpowers",
"version": "4.3.1",
"description": "Core skills library: TDD, debugging, collaboration patterns, and proven techniques for coding agents",

Copilot AI Feb 23, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The contextFileName field references .gemini/GEMINI.md, but this path is relative. It's unclear whether this should be:

  1. A path relative to the repository root (.gemini/GEMINI.md)
  2. A path relative to the user's home directory (~/.gemini/GEMINI.md)
  3. A path relative to where the extension is installed

The documentation doesn't clarify how Antigravity resolves this path. Consider adding a comment or verifying that this path works correctly when the extension is installed.

Suggested change
"description": "Core skills library: TDD, debugging, collaboration patterns, and proven techniques for coding agents",
"description": "Core skills library: TDD, debugging, collaboration patterns, and proven techniques for coding agents",
// Path is resolved by Antigravity relative to the repository root (e.g., <repo>/.gemini/GEMINI.md)

Copilot uses AI. Check for mistakes.
Comment thread docs/README.gemini.md
Comment on lines +33 to +41
Gemini CLI (v0.24.0+) natively supports Agent Skills. At startup it scans `~/.gemini/skills/` for directories containing a `SKILL.md` file and injects their name and description into the system prompt. When a task matches a skill's description, Gemini calls the `activate_skill` tool to load the full instructions.

The installer creates individual symlinks (hub pattern) so each skill is discoverable independently. Skills update instantly whenever you `git pull`.

## Usage

Once installed, skills are discovered automatically. Gemini will activate them when:
- You mention a skill by name (e.g., "use brainstorming")
- The task matches a skill's description

Copilot AI Feb 23, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The documentation claims that "Gemini calls the activate_skill tool to load the full instructions" when a task matches a skill's description. However, this contradicts the research findings in issue #128 which concluded that automatic skill activation doesn't work.

Additionally, there's no verification that an activate_skill tool actually exists in Gemini CLI. The documentation should either provide evidence that this tool exists and works as described, or be revised to reflect the actual behavior (which per issue #128 requires manual skill invocation).

Suggested change
Gemini CLI (v0.24.0+) natively supports Agent Skills. At startup it scans `~/.gemini/skills/` for directories containing a `SKILL.md` file and injects their name and description into the system prompt. When a task matches a skill's description, Gemini calls the `activate_skill` tool to load the full instructions.
The installer creates individual symlinks (hub pattern) so each skill is discoverable independently. Skills update instantly whenever you `git pull`.
## Usage
Once installed, skills are discovered automatically. Gemini will activate them when:
- You mention a skill by name (e.g., "use brainstorming")
- The task matches a skill's description
Gemini CLI (v0.24.0+) natively supports Agent Skills. At startup it scans `~/.gemini/skills/` for directories containing a `SKILL.md` file and injects their name and description into the system prompt. This makes the skills discoverable to the model, but does not guarantee automatic activation based on task content.
The installer creates individual symlinks (hub pattern) so each skill is discoverable independently. Skills update instantly whenever you `git pull`.
## Usage
Once installed, skills are discovered automatically, but you typically need to invoke them manually. For example:
- Ask Gemini explicitly to use a particular skill by name (e.g., "use the brainstorming skill for this task")
- Use the CLI's `/skills` commands to run or manage a specific skill

Copilot uses AI. Check for mistakes.
Comment thread docs/README.gemini.md

## How It Works

Gemini CLI (v0.24.0+) natively supports Agent Skills. At startup it scans `~/.gemini/skills/` for directories containing a `SKILL.md` file and injects their name and description into the system prompt. When a task matches a skill's description, Gemini calls the `activate_skill` tool to load the full instructions.

Copilot AI Feb 23, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The claim that "Gemini CLI (v0.24.0+) natively supports Agent Skills" and that skills activate automatically contradicts the research findings documented in issue #128. According to that issue's research, "Auto-Triggering Skills Doesn't Work" and "The only reliable approach: User must explicitly ask for a skill by name." The issue concluded that "Infrastructure works but auto-triggering is blocked by Gemini CLI's architecture."

The documentation should accurately reflect that users must explicitly request skills by name, rather than implying automatic activation based on task matching.

Copilot uses AI. Check for mistakes.
Comment thread gemini-extension.json Outdated
"name": "superpowers",
"version": "4.3.1",
"description": "Core skills library: TDD, debugging, collaboration patterns, and proven techniques for coding agents",
"contextFileName": ".gemini/GEMINI.md"

Copilot AI Feb 23, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The contextFileName field references .gemini/GEMINI.md, but this path is relative. It's unclear whether this should be:

  1. A path relative to the repository root (.gemini/GEMINI.md)
  2. A path relative to the user's home directory (~/.gemini/GEMINI.md)
  3. A path relative to where the extension is installed

The documentation doesn't clarify how Gemini CLI resolves this path. Consider adding a comment or verifying that this path works correctly when the extension is installed via gemini extensions install.

Copilot uses AI. Check for mistakes.
Comment thread docs/README.antigravity.md Outdated

2. Remove agent symlinks:
```bash
find ~/.gemini/agents -type l -lname '*/superpowers/.gemini/agents/*' -delete

Copilot AI Feb 23, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The uninstall command uses the pattern '*/superpowers/.gemini/agents/*' to find agent symlinks. However, the install script (line 77) sets REPO_AGENTS_DIR="$REPO_DIR/agents", which means agents are linked from $REPO_DIR/agents/*.md, not from $REPO_DIR/.gemini/agents/*.md.

The correct uninstall pattern should be: find ~/.gemini/agents -type l -lname '*/superpowers/agents/*' -delete

This bug would cause the uninstall command to fail to remove agent symlinks.

Suggested change
find ~/.gemini/agents -type l -lname '*/superpowers/.gemini/agents/*' -delete
find ~/.gemini/agents -type l -lname '*/superpowers/agents/*' -delete

Copilot uses AI. Check for mistakes.
Comment thread docs/README.gemini.md Outdated

```bash
find ~/.gemini/skills -type l -lname '*/superpowers/skills/*' -delete
find ~/.gemini/agents -type l -lname '*/superpowers/.gemini/agents/*' -delete

Copilot AI Feb 23, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The uninstall command uses the pattern '*/superpowers/.gemini/agents/*' to find agent symlinks. However, the install script (line 77 of install.sh) sets REPO_AGENTS_DIR="$REPO_DIR/agents", which means agents are linked from $REPO_DIR/agents/*.md, not from $REPO_DIR/.gemini/agents/*.md.

The correct uninstall pattern should be: find ~/.gemini/agents -type l -lname '*/superpowers/agents/*' -delete

This bug would cause the uninstall command to fail to remove agent symlinks.

Suggested change
find ~/.gemini/agents -type l -lname '*/superpowers/.gemini/agents/*' -delete
find ~/.gemini/agents -type l -lname '*/superpowers/agents/*' -delete

Copilot uses AI. Check for mistakes.
Comment thread .gemini/install.sh Outdated
Comment on lines +204 to +212
sed -i.bak "/$CONTEXT_HEADER/,/$CONTEXT_FOOTER/d" "$GEMINI_MD"
rm -f "${GEMINI_MD}.bak"
else
echo "Injecting Superpowers context into $GEMINI_MD..."
fi

# Trim trailing blank lines (prevents accumulation on repeated runs)
if sed -i.bak -e :a -e '/^[[:space:]]*$/{$d;N;ba' -e '}' "$GEMINI_MD" 2>/dev/null; then
rm -f "${GEMINI_MD}.bak"

Copilot AI Feb 23, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The sed command on line 204 uses -i.bak which creates a backup file with .bak extension. However, on line 205, the backup is immediately deleted with rm -f. This pattern is repeated throughout the script (lines 211-212, 213-214).

While this works, it's potentially risky because if the sed operation fails partway through, the original file could be corrupted with no backup. Consider using a temporary file approach or checking the sed exit status before removing the backup.

Suggested change
sed -i.bak "/$CONTEXT_HEADER/,/$CONTEXT_FOOTER/d" "$GEMINI_MD"
rm -f "${GEMINI_MD}.bak"
else
echo "Injecting Superpowers context into $GEMINI_MD..."
fi
# Trim trailing blank lines (prevents accumulation on repeated runs)
if sed -i.bak -e :a -e '/^[[:space:]]*$/{$d;N;ba' -e '}' "$GEMINI_MD" 2>/dev/null; then
rm -f "${GEMINI_MD}.bak"
if sed "/$CONTEXT_HEADER/,/$CONTEXT_FOOTER/d" "$GEMINI_MD" > "${GEMINI_MD}.tmp.remove"; then
mv "${GEMINI_MD}.tmp.remove" "$GEMINI_MD"
else
echo "Error: Failed to update Superpowers context in $GEMINI_MD" >&2
rm -f "${GEMINI_MD}.tmp.remove"
exit 1
fi
else
echo "Injecting Superpowers context into $GEMINI_MD..."
fi
# Trim trailing blank lines (prevents accumulation on repeated runs)
if sed -e :a -e '/^[[:space:]]*$/{$d;N;ba' -e '}' "$GEMINI_MD" > "${GEMINI_MD}.tmp.trim" 2>/dev/null; then
mv "${GEMINI_MD}.tmp.trim" "$GEMINI_MD"

Copilot uses AI. Check for mistakes.
Comment thread commands/brainstorm.toml Outdated
@@ -0,0 +1,3 @@
description = "You MUST use this before any creative work - creating features, building components, adding functionality, or modifying behavior. Explores requirements and design before implementation."

prompt = "Activate the brainstorming skill and follow it exactly as presented to you."

Copilot AI Feb 23, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The prompt text "Activate the brainstorming skill and follow it exactly as presented to you." is inconsistent with the existing pattern in commands/brainstorm.md which uses "Invoke the superpowers:brainstorming skill and follow it exactly as presented to you."

The existing pattern uses:

  1. "Invoke" instead of "Activate"
  2. Includes the "superpowers:" namespace prefix
  3. Uses the full skill name "brainstorming" instead of just "brainstorming skill"

This inconsistency could cause confusion about the correct way to reference skills.

Suggested change
prompt = "Activate the brainstorming skill and follow it exactly as presented to you."
prompt = "Invoke the superpowers:brainstorming skill and follow it exactly as presented to you."

Copilot uses AI. Check for mistakes.
@coderabbitai

coderabbitai Bot commented Feb 23, 2026

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

This PR introduces installation infrastructure, configuration files, and comprehensive documentation to integrate the Superpowers skill system with Google's Gemini CLI and Antigravity. It includes a Bash installer script for setting up symlinked skills and agents, extension manifests, TOML-based command definitions, and detailed setup guides for both platforms.

Changes

Cohort / File(s) Summary
Core Infrastructure
.gemini/GEMINI.md, .gemini/INSTALL.md, .gemini/install.sh
Establishes Superpowers configuration framework with skill/agent discovery and symlink management. Install script handles idempotent setup of ~/.gemini directories, creates relative symlinks for skills and agents with fallback logic, injects context markers into GEMINI.md, and supports platform-specific paths for Antigravity.
Extension Manifests
gemini-extension.json, antigravity-extension.json
Defines extension metadata for Gemini CLI and Antigravity platforms, pointing both to .gemini/GEMINI.md as the context configuration file.
Command Definitions
commands/brainstorm.toml, commands/execute-plan.toml, commands/write-plan.toml
Adds three command configurations that reference and activate named skills (brainstorming, executing-plans, writing-plans) with descriptive guidance for workflow stages.
Documentation
README.md, docs/README.gemini.md, docs/README.antigravity.md
Provides installation instructions, feature overview, skill discovery mechanics, usage workflows, tool mappings, troubleshooting, and update/uninstall procedures for both Gemini CLI and Antigravity integrations.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

  • Skill implementation PRs referenced by command configurations (brainstorm.toml, execute-plan.toml, write-plan.toml) — these define the actual skills activated by the command prompts introduced here

Poem

🐰 Symlinks dance and configs take flight,
Gemini and Antigravity shine bright,
Skills are wired, contexts injected clean,
The sweetest installer ever seen!
Superpowers now take their rightful place,

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title 'feat: Adds native Antigravity support' clearly and directly describes the main objective of the changeset, which is to add support for Antigravity.
Description check ✅ Passed The description appropriately references the linked issues (#267, #270) that this PR addresses, which directly relate to Antigravity support requests.
Linked Issues check ✅ Passed The PR comprehensively addresses both linked issues by providing native Antigravity integration, installation scripts, documentation, configuration files, and mapping tools for seamless Antigravity support.
Out of Scope Changes check ✅ Passed All changes are directly aligned with adding Antigravity support; no out-of-scope modifications were introduced beyond the stated objectives.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

♻️ Duplicate comments (5)
docs/README.antigravity.md (2)

75-78: Wrong -lname pattern for agent symlink removal.

This was flagged in a previous review. The pattern '*/superpowers/.gemini/agents/*' doesn't match how install.sh creates agent symlinks (targets are under superpowers/agents/, not superpowers/.gemini/agents/).

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/README.antigravity.md` around lines 75 - 78, The find command in the
docs uses the wrong -lname pattern for removing agent symlinks: update the
pattern used in the removal step (the line that currently contains find ...
-lname '*/superpowers/.gemini/agents/*' -delete) to match how install.sh creates
symlinks (targets under superpowers/agents/), i.e. change the -lname argument to
'*/superpowers/agents/*' so the find command correctly matches and deletes those
symlinks.

3-3: Wrong URL for Antigravity — still pointing to https://deepmind.google.

This was flagged in a previous review and remains unresolved.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/README.antigravity.md` at line 3, The README contains a bad URL string
"https://deepmind.google" pointing to Antigravity; update that URL in the
README.antigravity.md content to the correct Antigravity homepage (replace the
"https://deepmind.google" token with the official Antigravity/DeepMind URL),
ensure the Markdown link syntax remains valid, and run a quick link check to
confirm the new URL resolves.
.gemini/INSTALL.md (2)

3-3: Wrong URL for Antigravity — https://deepmind.google is not the Antigravity product page.

This was flagged in a previous review and appears to still be unresolved. The link should point to the actual Antigravity product URL, not Google DeepMind's research homepage.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.gemini/INSTALL.md at line 3, The markdown line referencing Antigravity uses
the wrong URL string `https://deepmind.google`; update the link target for the
Antigravity mention so it points to the official Antigravity product page
(replace the `https://deepmind.google` href) while keeping the link text
"Antigravity" intact; confirm the new URL is the official product/documentation
page for Antigravity before committing.

104-125: Uninstall steps are incomplete — Antigravity-specific symlinks are never cleaned up.

Line 33 states the installer symlinks skills into ~/.gemini/antigravity/skills/, but no uninstall step removes those symlinks. This was flagged in a prior review and appears unresolved.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.gemini/INSTALL.md around lines 104 - 125, The uninstall instructions miss
cleaning up Antigravity-specific symlinks; update .gemini/INSTALL.md to add
steps mirroring the existing ones that remove symlinks under
~/.gemini/antigravity/skills (and ~/.gemini/antigravity/agents if applicable),
remove any Antigravity-related block from ~/.gemini/GEMINI.md (similar to the
SUPERPOWERS-CONTEXT removal), and remove the ~/.gemini/antigravity repository
directory; reference the antigravity paths (e.g. ~/.gemini/antigravity/skills)
so the maintainer can add the appropriate find/delete commands and the final rm
-rf cleanup.
.gemini/GEMINI.md (1)

1-6: Pre-context directive sits outside the injected context block — already flagged.

Lines 1–6 (the "MUST read using-superpowers" enforcement) are outside the <!-- SUPERPOWERS-CONTEXT-START/END --> markers. The install script only injects the marker-bounded block into ~/.gemini/GEMINI.md, so users relying on the install.sh path will not receive this directive.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.gemini/GEMINI.md around lines 1 - 6, The "MUST read `using-superpowers`"
directive is outside the SUPERPOWERS-CONTEXT markers and thus won't be injected
by the install script; move the lines that enforce reading `using-superpowers`
(the paragraph starting "You have the Superpowers skills library installed..."
and the "MUST read `using-superpowers`" sentence) inside the <!--
SUPERPOWERS-CONTEXT-START --> and <!-- SUPERPOWERS-CONTEXT-END --> block in
.gemini/GEMINI.md so the install script will inject the directive correctly,
keeping the exact wording but relocating it between those markers.
🧹 Nitpick comments (2)
.gemini/install.sh (2)

38-73: Extract the symlink-creation logic into a reusable function.

The three-tier symlink fallback chain (ln -srpython3 relpath → absolute) is duplicated verbatim in three places (skills lines 61–70, agents lines 104–112, Antigravity skills lines 146–153). Extracting it into a helper function would reduce ~30 lines of duplication and make the logic easier to maintain.

Proposed helper function

Add near the top of the script (e.g., after the variable declarations):

# Create a symlink, preferring a relative path for portability.
# Usage: create_link <source> <target> <target_parent_dir>
create_link() {
    local src="$1" tgt="$2" tgt_dir="$3"
    if ln -sr "$src" "$tgt" 2>/dev/null; then
        :
    elif command -v python3 >/dev/null 2>&1; then
        local rel
        rel="$(python3 -c "import os,sys; print(os.path.relpath(sys.argv[1], sys.argv[2]))" "$src" "$tgt_dir")"
        ln -s "$rel" "$tgt"
    else
        echo "  ⚠ Warning: Neither GNU ln -sr nor python3 available. Using absolute path." >&2
        ln -s "$src" "$tgt"
    fi
}

Then replace each occurrence, e.g.:

-        if ln -sr "$skill_path" "$target_path" 2>/dev/null; then
-            : # GNU ln with -r support
-        elif command -v python3 >/dev/null 2>&1; then
-            rel_path="$(python3 -c "import os,sys; print(os.path.relpath(sys.argv[1], sys.argv[2]))" "$skill_path" "$SKILLS_DIR")"
-            ln -s "$rel_path" "$target_path"
-        else
-            echo "  ⚠ Warning: Neither GNU ln -sr nor python3 available. Using absolute path (less portable)."
-            ln -s "$skill_path" "$target_path"
-        fi
+        create_link "$skill_path" "$target_path" "$SKILLS_DIR"

Also applies to: 125-156

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.gemini/install.sh around lines 38 - 73, Extract the repeated symlink
creation logic into a helper function named create_link(src, tgt, tgt_dir) that
implements the three-tier fallback (ln -sr → python3 relpath → absolute ln -s)
and use it wherever the duplicated block appears (the blocks around the loops
that currently call ln -sr / python3 / ln -s for skills, agents and Antigravity
skills); replace the inline logic with calls like create_link "$skill_path"
"$target_path" "$SKILLS_DIR" (or the appropriate source/target/parent dir
variables) and ensure the helper mirrors current behavior including returning
non-zero on failure and printing the same warning message when falling back to
absolute paths.

45-57: Prefix match on repo path could match unintended directories.

[[ "$link_target" == "$REPO_DIR"* ]] (lines 48, 91, 134) would also match a path like $REPO_DIR-malicious/.... The consequence here is only that the script would re-create the link (benign), but appending a / tightens it:

-                if [[ "$link_target" == "$REPO_DIR"* ]]; then
+                if [[ "$link_target" == "$REPO_DIR/"* ]]; then

Apply the same change at lines 91 and 134.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.gemini/install.sh around lines 45 - 57, The conditional that checks whether
a symlink points into the repo uses a loose prefix match ([[ "$link_target" ==
"$REPO_DIR"* ]]) which can falsely match names like "$REPO_DIR-malicious";
update the checks that use link_target and REPO_DIR (the conditional in the
install script and the two other occurrences mentioned) to require a trailing
slash on the repo prefix (e.g. compare against "$REPO_DIR/" as the prefix) so
only paths under the repo directory match, and apply this exact same change for
the other occurrences referenced in the comment (the checks at the other two
locations).
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.gemini/INSTALL.md:
- Around line 112-116: The uninstall pattern in INSTALL.md uses the wrong
symlink target string and thus never matches the created agent symlinks; update
the find command 'find ~/.gemini/agents -type l -lname
'*/superpowers/.gemini/agents/*' -delete' to match the actual symlink target
created by install.sh (which points to $REPO_DIR/agents) by changing the -lname
pattern to '*/superpowers/agents/*' so agent symlinks are correctly removed.

In `@docs/README.antigravity.md`:
- Around line 68-85: The Uninstalling section misses removal of
Antigravity-specific skill symlinks; add a new step after the existing "Remove
skill symlinks" step that runs the same find/delete command targeted at the
antigravity skills directory (i.e., remove symlinks in
~/.gemini/antigravity/skills that lname '*/superpowers/skills/*'), then renumber
the subsequent steps (agents removal and repo removal) accordingly and ensure
the new step matches the formatting of the surrounding steps in
README.antigravity.md.

In `@docs/README.gemini.md`:
- Around line 55-62: The uninstall instructions use a wrong symlink pattern and
require manual GEMINI.md edits; update the agents removal find pattern to match
links created from REPO_AGENTS_DIR (i.e., look for symlinks pointing to
.../superpowers/agents/* instead of .../superpowers/.gemini/agents/*) and
replace the manual "Edit ~/.gemini/GEMINI.md" step with the same marker-based
sed removal used by the installer (the code that manipulates the
SUPERPOWERS-CONTEXT block), ensuring the uninstall docs reference the exact
marker strings and the same sed command sequence used by the installer script.

---

Duplicate comments:
In @.gemini/GEMINI.md:
- Around line 1-6: The "MUST read `using-superpowers`" directive is outside the
SUPERPOWERS-CONTEXT markers and thus won't be injected by the install script;
move the lines that enforce reading `using-superpowers` (the paragraph starting
"You have the Superpowers skills library installed..." and the "MUST read
`using-superpowers`" sentence) inside the <!-- SUPERPOWERS-CONTEXT-START --> and
<!-- SUPERPOWERS-CONTEXT-END --> block in .gemini/GEMINI.md so the install
script will inject the directive correctly, keeping the exact wording but
relocating it between those markers.

In @.gemini/INSTALL.md:
- Line 3: The markdown line referencing Antigravity uses the wrong URL string
`https://deepmind.google`; update the link target for the Antigravity mention so
it points to the official Antigravity product page (replace the
`https://deepmind.google` href) while keeping the link text "Antigravity"
intact; confirm the new URL is the official product/documentation page for
Antigravity before committing.
- Around line 104-125: The uninstall instructions miss cleaning up
Antigravity-specific symlinks; update .gemini/INSTALL.md to add steps mirroring
the existing ones that remove symlinks under ~/.gemini/antigravity/skills (and
~/.gemini/antigravity/agents if applicable), remove any Antigravity-related
block from ~/.gemini/GEMINI.md (similar to the SUPERPOWERS-CONTEXT removal), and
remove the ~/.gemini/antigravity repository directory; reference the antigravity
paths (e.g. ~/.gemini/antigravity/skills) so the maintainer can add the
appropriate find/delete commands and the final rm -rf cleanup.

In `@docs/README.antigravity.md`:
- Around line 75-78: The find command in the docs uses the wrong -lname pattern
for removing agent symlinks: update the pattern used in the removal step (the
line that currently contains find ... -lname '*/superpowers/.gemini/agents/*'
-delete) to match how install.sh creates symlinks (targets under
superpowers/agents/), i.e. change the -lname argument to
'*/superpowers/agents/*' so the find command correctly matches and deletes those
symlinks.
- Line 3: The README contains a bad URL string "https://deepmind.google"
pointing to Antigravity; update that URL in the README.antigravity.md content to
the correct Antigravity homepage (replace the "https://deepmind.google" token
with the official Antigravity/DeepMind URL), ensure the Markdown link syntax
remains valid, and run a quick link check to confirm the new URL resolves.

---

Nitpick comments:
In @.gemini/install.sh:
- Around line 38-73: Extract the repeated symlink creation logic into a helper
function named create_link(src, tgt, tgt_dir) that implements the three-tier
fallback (ln -sr → python3 relpath → absolute ln -s) and use it wherever the
duplicated block appears (the blocks around the loops that currently call ln -sr
/ python3 / ln -s for skills, agents and Antigravity skills); replace the inline
logic with calls like create_link "$skill_path" "$target_path" "$SKILLS_DIR" (or
the appropriate source/target/parent dir variables) and ensure the helper
mirrors current behavior including returning non-zero on failure and printing
the same warning message when falling back to absolute paths.
- Around line 45-57: The conditional that checks whether a symlink points into
the repo uses a loose prefix match ([[ "$link_target" == "$REPO_DIR"* ]]) which
can falsely match names like "$REPO_DIR-malicious"; update the checks that use
link_target and REPO_DIR (the conditional in the install script and the two
other occurrences mentioned) to require a trailing slash on the repo prefix
(e.g. compare against "$REPO_DIR/" as the prefix) so only paths under the repo
directory match, and apply this exact same change for the other occurrences
referenced in the comment (the checks at the other two locations).

ℹ️ Review info

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between e4a2375 and b56f2a7.

📒 Files selected for processing (11)
  • .gemini/GEMINI.md
  • .gemini/INSTALL.md
  • .gemini/install.sh
  • README.md
  • antigravity-extension.json
  • commands/brainstorm.toml
  • commands/execute-plan.toml
  • commands/write-plan.toml
  • docs/README.antigravity.md
  • docs/README.gemini.md
  • gemini-extension.json

Comment thread .gemini/INSTALL.md Outdated
Comment thread docs/README.antigravity.md
Comment thread docs/README.gemini.md
- Align version to 4.3.1
- Improve symlink resolution and blank line trimming in installer
- Standardize tool mapping across all context files
- Automate GEMINI.md cleanup in uninstall instructions
- Resolve conflicts in installer and context files
- Update Antigravity uninstall instructions
- Consolidate release notes for v4.3.1
- Pin installation URLs to v4.3.1 in READMEs
Subagent parity:
- Port implementer, spec-reviewer, and all 3 prompt templates
  with YAML frontmatter from Gemini branch
- Update prompt template references to say 'Antigravity'

Skill content parity:
- Broaden SKILL.md descriptions (brainstorming, writing-plans,
  using-superpowers) for better semantic matching
- Add Antigravity view_file instructions to using-superpowers
- Add Antigravity subagent examples to dispatching-parallel-agents,
  requesting-code-review
- Add ~/.gemini/skills/ path to writing-skills
- Update dot graph to use generic Skill/view_file label

Docs and config:
- Fix antigravity-extension.json contextFileName
- Add Node.js/Python prereqs and hook registration to INSTALL.md
- Add re-run note to updating sections (INSTALL.md, README)
- Add hook cleanup to uninstall steps (INSTALL.md, README)

Cleanup:
- Delete dead commands/*.toml files
- Delete duplicate gemini-extension.json

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 5

♻️ Duplicate comments (1)
docs/README.antigravity.md (1)

3-3: Antigravity link still points to https://deepmind.google instead of the official product URL.

This was raised in a previous review cycle and remains unresolved.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/README.antigravity.md` at line 3, The Antigravity link in
docs/README.antigravity.md still points to the placeholder URL
'https://deepmind.google'; update that markdown link target to the official
Antigravity product URL (replace 'https://deepmind.google' with the correct
product URL) so the guide's first line points to the proper resource. Ensure the
visible link text remains "Antigravity" and that the markdown syntax stays
valid.
🧹 Nitpick comments (3)
agents/spec-reviewer-prompt-template.md (1)

30-32: Hardcoded "suspiciously quickly" assumption may not always apply.

The sentence unconditionally primes the reviewer with a false premise in cases where the implementer took a normal or long amount of time. The intent (healthy skepticism toward the report) is valid; consider a neutral formulation.

📝 Suggested fix
-The implementer finished suspiciously quickly. Their report may be incomplete,
-inaccurate, or optimistic. You MUST verify everything independently.
+The implementer's report may be incomplete, inaccurate, or optimistic. You MUST verify everything independently.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@agents/spec-reviewer-prompt-template.md` around lines 30 - 32, Replace the
unconditional hardcoded sentence "The implementer finished suspiciously quickly.
Their report may be incomplete, inaccurate, or optimistic." with a neutral,
conditional prompt that preserves healthy skepticism but doesn't assume speed as
fact—for example, change it to something like "If the implementation appears to
have been completed unusually quickly, independently verify the report for
completeness and accuracy." Locate and update that exact sentence in the
spec-reviewer prompt template (the line containing "The implementer finished
suspiciously quickly...") so the reviewer is primed conditionally rather than
being given a potentially incorrect premise.
antigravity-extension.json (1)

1-6: Consider moving to a harness-specific subdirectory.

Based on learnings, the repo places harness-specific files under named directories (e.g., .pi/ for Pi). The Gemini-related files in this PR live under .gemini/. Placing antigravity-extension.json at the repo root breaks this convention. If Antigravity's spec doesn't mandate root placement, consider .antigravity/antigravity-extension.json.

Based on learnings: "The superpowers repository organizes harness-specific files in named directories for each harness (e.g., .pi/ for Pi, similar pattern for other harnesses)."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@antigravity-extension.json` around lines 1 - 6, antigravity-extension.json is
placed at the repo root which breaks the repo convention of keeping
harness-specific files in a named directory (e.g., .pi/, .gemini/); move the
file into a harness-specific folder such as
.antigravity/antigravity-extension.json and update any build/config references
that load "antigravity-extension.json" or rely on "contextFileName": "GEMINI.md"
to point to the new relative path (ensure any loader code that expects
antigravity-extension.json at root is updated to read
.antigravity/antigravity-extension.json).
agents/implementer-prompt-template.md (1)

40-46: Step 4 drops the "if allowed, otherwise report changes" qualifier present in implementer.md.

agents/implementer.md reads: "Commit your work (if allowed, otherwise report changes)." The template omits the fallback, which matters in environments where the subagent lacks commit access — it will attempt to commit and may fail silently.

📝 Suggested fix
-4. Commit your work
+4. Commit your work (if allowed, otherwise report changes)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@agents/implementer-prompt-template.md` around lines 40 - 46, Update Step 4 in
the agents/implementer-prompt-template.md numbered list to restore the missing
qualifier from implementer.md: change the line "Commit your work" to "Commit
your work (if allowed, otherwise report changes)" so the template won't attempt
to commit when the subagent lacks commit access; specifically edit the Step 4
bullet in the list of steps referenced in the template.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@agents/code-reviewer-prompt-template.md`:
- Around line 16-77: The dispatch fails because the template uses
subagent_type="code-reviewer" but no agents/code-reviewer.md exists; add a new
agents/code-reviewer.md agent definition modeled on agents/spec-reviewer.md
(same metadata and toolset) and register the agent name "code-reviewer" so the
dispatcher can resolve it; ensure the agent grants the necessary tools (e.g.,
read_file, glob, run_shell_command or git diff/git_show tools used by the
prompt) so the prompt that references [BASE_SHA]/[HEAD_SHA] and the
code-reviewer subagent can access repo diffs and files.

In `@antigravity-extension.json`:
- Line 5: The extension's contextFileName key currently points to "GEMINI.md"
(root) which doesn't match the real file location; update the contextFileName
value from "GEMINI.md" to ".gemini/GEMINI.md" (or alternatively move the
GEMINI.md file to the repo root) so Antigravity can find and inject the context;
look for the contextFileName entry to make this change.

In `@docs/README.codex.md`:
- Around line 10-13: The README contains a GFM admonition token "> [!TIP]"
inside a fenced code block so it renders verbatim instead of a callout; edit the
fenced block (the triple-backtick snippet that currently includes the install
curl command and the literal "> [!TIP]") so the code block contains only the
command/URL, then move the admonition lines (the "> [!TIP]" and the explanatory
sentence about verifying/install scripts) outside and immediately after the code
fence so the admonition renders as a proper GFM callout.

In `@RELEASE-NOTES.md`:
- Line 13: The release note line wrongly implies `.gemini/install.sh` is the
installer for Cursor as well; update the sentence in RELEASE-NOTES.md to
explicitly separate Cursor from Gemini/Antigravity by stating that Gemini and
Antigravity use `.gemini/install.sh` while Cursor uses
`.cursor-plugin/plugin.json`, or rephrase to say "Unified installation and
configuration via `.gemini/install.sh` for Gemini and Antigravity; Cursor uses
`.cursor-plugin/plugin.json`" so the distinction between `.gemini/install.sh`
and `.cursor-plugin/plugin.json` is clear.

In `@skills/dispatching-parallel-agents/SKILL.md`:
- Around line 66-72: Replace the commented TypeScript/JS placeholder that
mentions browser_subagent with a concrete Antigravity Python example using the
task(...) API; specifically, change the commented block referencing
browser_subagent to show three calls to task(description=...,
subagent_type="implementer", prompt="...") (or similar valid task(...)
arguments) so the example matches the other prompt-template files and
demonstrates concurrent sub-agent dispatch via task().

---

Duplicate comments:
In `@docs/README.antigravity.md`:
- Line 3: The Antigravity link in docs/README.antigravity.md still points to the
placeholder URL 'https://deepmind.google'; update that markdown link target to
the official Antigravity product URL (replace 'https://deepmind.google' with the
correct product URL) so the guide's first line points to the proper resource.
Ensure the visible link text remains "Antigravity" and that the markdown syntax
stays valid.

---

Nitpick comments:
In `@agents/implementer-prompt-template.md`:
- Around line 40-46: Update Step 4 in the agents/implementer-prompt-template.md
numbered list to restore the missing qualifier from implementer.md: change the
line "Commit your work" to "Commit your work (if allowed, otherwise report
changes)" so the template won't attempt to commit when the subagent lacks commit
access; specifically edit the Step 4 bullet in the list of steps referenced in
the template.

In `@agents/spec-reviewer-prompt-template.md`:
- Around line 30-32: Replace the unconditional hardcoded sentence "The
implementer finished suspiciously quickly. Their report may be incomplete,
inaccurate, or optimistic." with a neutral, conditional prompt that preserves
healthy skepticism but doesn't assume speed as fact—for example, change it to
something like "If the implementation appears to have been completed unusually
quickly, independently verify the report for completeness and accuracy." Locate
and update that exact sentence in the spec-reviewer prompt template (the line
containing "The implementer finished suspiciously quickly...") so the reviewer
is primed conditionally rather than being given a potentially incorrect premise.

In `@antigravity-extension.json`:
- Around line 1-6: antigravity-extension.json is placed at the repo root which
breaks the repo convention of keeping harness-specific files in a named
directory (e.g., .pi/, .gemini/); move the file into a harness-specific folder
such as .antigravity/antigravity-extension.json and update any build/config
references that load "antigravity-extension.json" or rely on "contextFileName":
"GEMINI.md" to point to the new relative path (ensure any loader code that
expects antigravity-extension.json at root is updated to read
.antigravity/antigravity-extension.json).

ℹ️ Review info

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between b56f2a7 and d2eb7af.

📒 Files selected for processing (20)
  • .gemini/GEMINI.md
  • .gemini/INSTALL.md
  • .gemini/install.sh
  • README.md
  • RELEASE-NOTES.md
  • agents/code-reviewer-prompt-template.md
  • agents/implementer-prompt-template.md
  • agents/implementer.md
  • agents/spec-reviewer-prompt-template.md
  • agents/spec-reviewer.md
  • antigravity-extension.json
  • docs/README.antigravity.md
  • docs/README.codex.md
  • docs/README.gemini.md
  • skills/brainstorming/SKILL.md
  • skills/dispatching-parallel-agents/SKILL.md
  • skills/requesting-code-review/SKILL.md
  • skills/using-superpowers/SKILL.md
  • skills/writing-plans/SKILL.md
  • skills/writing-skills/SKILL.md
✅ Files skipped from review due to trivial changes (1)
  • skills/writing-plans/SKILL.md
🚧 Files skipped from review as they are similar to previous changes (5)
  • README.md
  • .gemini/install.sh
  • docs/README.gemini.md
  • .gemini/GEMINI.md
  • .gemini/INSTALL.md

Comment on lines +16 to +77
```python
task(
description="Code quality review for Task N",
subagent_type="code-reviewer",
prompt="""
You are reviewing code quality for an implementation that has passed spec compliance review.

## What Was Implemented

[From implementer's report]

## Plan/Requirements

Task N from [plan-file]

## Code Review

Review the code changes between [BASE_SHA] and [HEAD_SHA] for:

**Readability:**
- Is the code easy to understand?
- Are names clear and accurate?

**Maintainability:**
- Is it easy to modify or extend?
- Is it well-structured?

**Testability:**
- Is the code structured for easy testing?
- Are tests comprehensive?

**Best Practices:**
- Does it follow established principles (DRY, SOLID)?
- Does it follow existing codebase patterns?

**Efficiency:**
- Are there obvious performance bottlenecks?

**Error Handling:**
- Is error handling robust and appropriate?

**Comments/Documentation:**
- Are complex parts explained where necessary?

## Report Format

Your report should clearly state:

**Strengths:** Positive aspects of the code.

**Issues:** Grouped by:
- `Critical` (must fix) - breaks functionality, security issues
- `Important` (should fix) - maintainability, clarity issues
- `Minor` (suggestion) - nice-to-have improvements

**Overall Assessment:**
- "Approved" - no issues
- "Approved with minor suggestions" - only Minor issues
- "Changes required" - Critical or Important issues found
"""
)
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Missing agents/code-reviewer.md agent definition breaks this dispatch.

The template dispatches subagent_type="code-reviewer", but unlike implementer and spec-reviewer — both of which have corresponding agents/implementer.md and agents/spec-reviewer.md definitions — there is no agents/code-reviewer.md in this PR. Without the agent definition, Antigravity cannot resolve the subagent type, the dispatch will fail, and the tool list (including whatever git access is needed for the [BASE_SHA]/[HEAD_SHA] comparison on line 33) is undefined.

Would you like me to draft a agents/code-reviewer.md definition (analogous to spec-reviewer.md) that specifies the appropriate tool set (e.g., read_file, glob, run_shell_command) to support SHA-based diff review? I can open a new issue to track this if preferred.

#!/bin/bash
# Verify no code-reviewer.md exists anywhere in the agents/ directory
fd 'code-reviewer.md' agents/
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@agents/code-reviewer-prompt-template.md` around lines 16 - 77, The dispatch
fails because the template uses subagent_type="code-reviewer" but no
agents/code-reviewer.md exists; add a new agents/code-reviewer.md agent
definition modeled on agents/spec-reviewer.md (same metadata and toolset) and
register the agent name "code-reviewer" so the dispatcher can resolve it; ensure
the agent grants the necessary tools (e.g., read_file, glob, run_shell_command
or git diff/git_show tools used by the prompt) so the prompt that references
[BASE_SHA]/[HEAD_SHA] and the code-reviewer subagent can access repo diffs and
files.

"name": "superpowers",
"version": "4.3.1",
"description": "Core skills library: TDD, debugging, collaboration patterns, and proven techniques for coding agents",
"contextFileName": "GEMINI.md"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

# First, find and inspect the antigravity-extension.json file
fd -type f -name "antigravity-extension.json" | head -20

Repository: obra/superpowers

Length of output: 230


🏁 Script executed:

# Also search for any GEMINI.md file in the repository
fd -type f -name "GEMINI.md"

Repository: obra/superpowers

Length of output: 230


🏁 Script executed:

# Look for other antigravity references or documentation
rg -i "antigravity" --type json --type md | head -30

Repository: obra/superpowers

Length of output: 3859


🌐 Web query:

Antigravity IDE extension manifest contextFileName documentation

💡 Result:

In an Antigravity/Gemini-style extension manifest (gemini-extension.json), contextFileName specifies the context file(s) (Markdown instructions) that should be loaded from the extension’s directory when the extension is active. It can be either a single string or an array of strings. If you omit it and a GEMINI.md exists in the extension directory, GEMINI.md is loaded by default. [1], [2], [3]

Example: [1], [2]

{
  "name": "my-extension",
  "version": "1.0.0",
  "contextFileName": ["GEMINI.md", "AGENTS.md"],
  "mcpServers": {
    "my-server": { "command": "node my-server.js" }
  }
}

Sources: Gemini CLI extension reference / writing-extensions docs. [1], [2], [3]


🏁 Script executed:

# Let me properly find the antigravity-extension.json file
fd -type f -name "*antigravity*.json"

Repository: obra/superpowers

Length of output: 230


🏁 Script executed:

# Search for GEMINI.md file
fd -type f -name "*GEMINI*"

Repository: obra/superpowers

Length of output: 230


🏁 Script executed:

# Look at the antigravity-extension.json content
find . -name "antigravity-extension.json" -exec cat {} \;

Repository: obra/superpowers

Length of output: 272


🏁 Script executed:

# Check if GEMINI.md exists at root or in common locations
ls -la | grep -i gemini

Repository: obra/superpowers

Length of output: 118


🏁 Script executed:

# Search for any GEMINI.md files (case-insensitive)
find . -iname "gemini.md"

Repository: obra/superpowers

Length of output: 79


🏁 Script executed:

# List all markdown files at the root
ls -la *.md

Repository: obra/superpowers

Length of output: 186


🏁 Script executed:

# Search all markdown files in the repository
fd -e md | head -30

Repository: obra/superpowers

Length of output: 1101


🏁 Script executed:

# Check the README.antigravity.md to understand extension expectations
cat docs/README.antigravity.md | grep -A 10 -B 5 "extension"

Repository: obra/superpowers

Length of output: 955


🏁 Script executed:

# Check what's in the .gemini directory
ls -la .gemini/

Repository: obra/superpowers

Length of output: 355


🏁 Script executed:

# Look at the GEMINI.md file to understand what it contains
head -50 .gemini/GEMINI.md

Repository: obra/superpowers

Length of output: 1492


Fix contextFileName path to match actual GEMINI.md location.

contextFileName: "GEMINI.md" references a file at the repository root, but GEMINI.md is located at .gemini/GEMINI.md. Antigravity will silently fail to inject the context when installing this extension. Change to ".gemini/GEMINI.md" or relocate the file.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@antigravity-extension.json` at line 5, The extension's contextFileName key
currently points to "GEMINI.md" (root) which doesn't match the real file
location; update the contextFileName value from "GEMINI.md" to
".gemini/GEMINI.md" (or alternatively move the GEMINI.md file to the repo root)
so Antigravity can find and inject the context; look for the contextFileName
entry to make this change.

Comment thread docs/README.codex.md
Comment on lines +10 to +13
Fetch and follow instructions from https://raw.githubusercontent.com/obra/superpowers/v4.3.1/.codex/INSTALL.md

> [!TIP]
> Always download and inspect installation scripts before running them. Use `curl -fsSL <url> -o install-superpowers.sh && less install-superpowers.sh && bash install-superpowers.sh` to verify content.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

> [!TIP] is inside the fenced code block and will render as raw text, not a formatted callout.

Lines 9–14 form a single Markdown fenced code block (the instruction snippet to paste to Codex). Any GFM admonition syntax inside a code fence is treated as literal characters and will not be rendered as a callout — the reader sees > [!TIP] verbatim instead of a blue info box.

If the tip is meant for the human reading this README (as the AI summary states), move it outside the code block:

📝 Proposed fix
 Tell Codex:
 

Fetch and follow instructions from https://raw.githubusercontent.com/obra/superpowers/v4.3.1/.codex/INSTALL.md

-> [!TIP]
-> Always download and inspect installation scripts before running them. Use curl -fsSL <url> -o install-superpowers.sh && less install-superpowers.sh && bash install-superpowers.sh to verify content.

+
+> [!TIP]
+> Always download and inspect installation scripts before running them. Use `curl -fsSL <url> -o install-superpowers.sh && less install-superpowers.sh && bash install-superpowers.sh` to verify content.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/README.codex.md` around lines 10 - 13, The README contains a GFM
admonition token "> [!TIP]" inside a fenced code block so it renders verbatim
instead of a callout; edit the fenced block (the triple-backtick snippet that
currently includes the install curl command and the literal "> [!TIP]") so the
code block contains only the command/URL, then move the admonition lines (the ">
[!TIP]" and the explanatory sentence about verifying/install scripts) outside
and immediately after the code fence so the admonition renders as a proper GFM
callout.

Comment thread RELEASE-NOTES.md
- Added `.cursor-plugin/plugin.json` for Cursor support
- Added `gemini-extension.json` for Gemini CLI support
- Added `antigravity-extension.json` for Antigravity support
- Unified installation and configuration via `.gemini/install.sh` for all Google-backed assistants

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

"all Google-backed assistants" conflates Cursor with Gemini/Antigravity.

Cursor uses .cursor-plugin/plugin.json, not .gemini/install.sh. As written, the sentence implies .gemini/install.sh is the unified installer for all three platforms listed above it, which is incorrect.

📝 Proposed fix
-- Unified installation and configuration via `.gemini/install.sh` for all Google-backed assistants
+- Unified installation and configuration via `.gemini/install.sh` for Gemini CLI and Antigravity
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@RELEASE-NOTES.md` at line 13, The release note line wrongly implies
`.gemini/install.sh` is the installer for Cursor as well; update the sentence in
RELEASE-NOTES.md to explicitly separate Cursor from Gemini/Antigravity by
stating that Gemini and Antigravity use `.gemini/install.sh` while Cursor uses
`.cursor-plugin/plugin.json`, or rephrase to say "Unified installation and
configuration via `.gemini/install.sh` for Gemini and Antigravity; Cursor uses
`.cursor-plugin/plugin.json`" so the distinction between `.gemini/install.sh`
and `.cursor-plugin/plugin.json` is clear.

Comment on lines +66 to +72
```javascript
// In Antigravity environment (using sub-agents / browser_subagent)
// Each sub-agent runs concurrently with its own context
// Agent 1: "Fix agent-tool-abort.test.ts failures"
// Agent 2: "Fix batch-completion-behavior.test.ts failures"
// Agent 3: "Fix tool-approval-race-conditions.test.ts failures"
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

browser_subagent API name inconsistency — consider showing concrete task() dispatch.

Line 67 references browser_subagent as the Antigravity dispatch mechanism, but every other Antigravity dispatch example in this PR (all three *-prompt-template.md files) uses the Python task(subagent_type=...) function. Additionally, unlike the TypeScript block immediately below (which shows real Task() calls), this block is composed entirely of comments, making it a weaker reference example.

Consider replacing with a concrete Python snippet aligned with the actual API:

📝 Suggested Antigravity block
-```javascript
-// In Antigravity environment (using sub-agents / browser_subagent)
-// Each sub-agent runs concurrently with its own context
-// Agent 1: "Fix agent-tool-abort.test.ts failures"
-// Agent 2: "Fix batch-completion-behavior.test.ts failures"
-// Agent 3: "Fix tool-approval-race-conditions.test.ts failures"
-```
+```python
+# In Antigravity environment
+task(description="Fix agent-tool-abort.test.ts failures", subagent_type="implementer", prompt="...")
+task(description="Fix batch-completion-behavior.test.ts failures", subagent_type="implementer", prompt="...")
+task(description="Fix tool-approval-race-conditions.test.ts failures", subagent_type="implementer", prompt="...")
+# All three run concurrently
+```
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
```javascript
// In Antigravity environment (using sub-agents / browser_subagent)
// Each sub-agent runs concurrently with its own context
// Agent 1: "Fix agent-tool-abort.test.ts failures"
// Agent 2: "Fix batch-completion-behavior.test.ts failures"
// Agent 3: "Fix tool-approval-race-conditions.test.ts failures"
```
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@skills/dispatching-parallel-agents/SKILL.md` around lines 66 - 72, Replace
the commented TypeScript/JS placeholder that mentions browser_subagent with a
concrete Antigravity Python example using the task(...) API; specifically,
change the commented block referencing browser_subagent to show three calls to
task(description=..., subagent_type="implementer", prompt="...") (or similar
valid task(...) arguments) so the example matches the other prompt-template
files and demonstrates concurrent sub-agent dispatch via task().

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.gemini/INSTALL.md:
- Around line 121-135: The uninstall steps in .gemini/INSTALL.md have duplicated
numbering ("3." used twice); update the second occurrence by changing the
heading for the hooks removal step from "3. **Remove hooks from
settings.json:**" to "4. **Remove hooks from settings.json:**" so the sequence
is correct; adjust only the markdown numbering label that precedes the python
command block ensuring the "Remove hooks from settings.json" header now reads
"4.".

ℹ️ Review info

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d2eb7af and 3a08ecb.

📒 Files selected for processing (4)
  • .gemini/INSTALL.md
  • .gemini/install.sh
  • README.md
  • docs/README.antigravity.md
🚧 Files skipped from review as they are similar to previous changes (1)
  • .gemini/install.sh

Comment thread .gemini/INSTALL.md
Comment on lines +121 to +135
3. **Remove the agent symlinks:**

```bash
find ~/.gemini/agents -type l -lname '*/superpowers/agents/*' -delete
```

3. **Remove hooks from settings.json:**
```bash
python3 -c "
import json
with open('$HOME/.gemini/settings.json') as f: d = json.load(f)
for k in ('beforeAgent','beforeTool'):
d.get('hooks',{}).get(k,[])[:] = [h for h in d.get('hooks',{}).get(k,[]) if 'superpowers' not in h.get('name','')]
with open('$HOME/.gemini/settings.json','w') as f: json.dump(d,f,indent=2); f.write('\n')
" 2>/dev/null || true

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Fix duplicated step numbering in Uninstalling.
The uninstall list has two “3.” items; renumber the hooks step to keep the sequence consistent.

🛠️ Suggested fix
-3. **Remove the agent symlinks:**
+3. **Remove the agent symlinks:**
    ```bash
    find ~/.gemini/agents -type l -lname '*/superpowers/agents/*' -delete
    ```
 
-3. **Remove hooks from settings.json:**
+4. **Remove hooks from settings.json:**
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
3. **Remove the agent symlinks:**
```bash
find ~/.gemini/agents -type l -lname '*/superpowers/agents/*' -delete
```
3. **Remove hooks from settings.json:**
```bash
python3 -c "
import json
with open('$HOME/.gemini/settings.json') as f: d = json.load(f)
for k in ('beforeAgent','beforeTool'):
d.get('hooks',{}).get(k,[])[:] = [h for h in d.get('hooks',{}).get(k,[]) if 'superpowers' not in h.get('name','')]
with open('$HOME/.gemini/settings.json','w') as f: json.dump(d,f,indent=2); f.write('\n')
" 2>/dev/null || true
3. **Remove the agent symlinks:**
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.gemini/INSTALL.md around lines 121 - 135, The uninstall steps in
.gemini/INSTALL.md have duplicated numbering ("3." used twice); update the
second occurrence by changing the heading for the hooks removal step from "3.
**Remove hooks from settings.json:**" to "4. **Remove hooks from
settings.json:**" so the sequence is correct; adjust only the markdown numbering
label that precedes the python command block ensuring the "Remove hooks from
settings.json" header now reads "4.".

@obra obra added enhancement New feature or request antigravity Antigravity IDE integration new-harness Requests for harnesses with few existing items labels Mar 4, 2026
@obra

obra commented Mar 29, 2026

Copy link
Copy Markdown
Owner

Hi @mhenke — PRs #192 and #281 already add Antigravity support, with #192 having an active conversation with the maintainer. Could you explain why you opened a new PR rather than reviewing or building on the existing ones? Was there something about those approaches that didn't work for you?

— Claude Opus 4.6, Claude Code 2.1.87

@obra

obra commented Apr 27, 2026

Copy link
Copy Markdown
Owner

Closing as a duplicate. Per the maintainer comment on 2026-03-29, this duplicates the existing Antigravity work in #192 / #281. The author hasn't responded to the duplicate-PR question in ~30 days. Antigravity support work should continue in #192.

— Claude Opus 4.7, Claude Code 2.1.112

@obra obra closed this Apr 27, 2026
dylmos-own01 pushed a commit to dylmos-own01/superpowers that referenced this pull request May 18, 2026
* fix agent teams coordination guardrails

* address agent teams review feedback
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

antigravity Antigravity IDE integration enhancement New feature or request new-harness Requests for harnesses with few existing items

Projects

None yet

Development

Successfully merging this pull request may close these issues.

How can I use Superpowers in Antigravity Antigravity Support

3 participants