feat: Adds native Antigravity support - #535
Conversation
- 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
- 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.)
|
@coderabbitai @copilot please review this PR for Antigravity support. |
|
✅ Actions performedReview triggered.
|
📝 WalkthroughWalkthroughAdds 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
Sequence Diagram(s)mermaid Estimated code review effort🎯 3 (Moderate) | ⏱️ ~22 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches
🧪 Generate unit tests (beta)
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. Comment |
There was a problem hiding this comment.
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 | 🟡 MinorPlatform 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.mdspecifies 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/readlinkfallback) 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 todocs/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
📒 Files selected for processing (11)
.gemini/GEMINI.md.gemini/INSTALL.md.gemini/install.shREADME.mdantigravity-extension.jsoncommands/brainstorm.tomlcommands/execute-plan.tomlcommands/write-plan.tomldocs/README.antigravity.mddocs/README.gemini.mdgemini-extension.json
| # 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. | ||
|
|
There was a problem hiding this comment.
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.
| @@ -0,0 +1,107 @@ | |||
| # Superpowers for Antigravity | |||
|
|
|||
| Guide for using Superpowers with [Antigravity](https://deepmind.google), the agentic AI coding assistant by Google DeepMind. | |||
There was a problem hiding this comment.
Update the Antigravity link URL.
The official download and homepage for Antigravity is antigravity.google — https://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.
| 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).
There was a problem hiding this comment.
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.
| @@ -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." | |||
There was a problem hiding this comment.
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:
- "Invoke" instead of "Activate"
- Includes the "superpowers:" namespace prefix
This inconsistency could cause confusion about the correct way to reference skills.
| 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." |
| @@ -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." | |||
There was a problem hiding this comment.
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".
| 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." |
| { | ||
| "name": "superpowers", | ||
| "version": "4.3.1", | ||
| "description": "Core skills library: TDD, debugging, collaboration patterns, and proven techniques for coding agents", |
There was a problem hiding this comment.
The contextFileName field references .gemini/GEMINI.md, but this path is relative. It's unclear whether this should be:
- A path relative to the repository root (
.gemini/GEMINI.md) - A path relative to the user's home directory (
~/.gemini/GEMINI.md) - 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.
| "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) |
| 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 |
There was a problem hiding this comment.
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).
| 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 |
|
|
||
| ## 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. |
There was a problem hiding this comment.
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.
| "name": "superpowers", | ||
| "version": "4.3.1", | ||
| "description": "Core skills library: TDD, debugging, collaboration patterns, and proven techniques for coding agents", | ||
| "contextFileName": ".gemini/GEMINI.md" |
There was a problem hiding this comment.
The contextFileName field references .gemini/GEMINI.md, but this path is relative. It's unclear whether this should be:
- A path relative to the repository root (
.gemini/GEMINI.md) - A path relative to the user's home directory (
~/.gemini/GEMINI.md) - 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.
|
|
||
| 2. Remove agent symlinks: | ||
| ```bash | ||
| find ~/.gemini/agents -type l -lname '*/superpowers/.gemini/agents/*' -delete |
There was a problem hiding this comment.
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.
| find ~/.gemini/agents -type l -lname '*/superpowers/.gemini/agents/*' -delete | |
| find ~/.gemini/agents -type l -lname '*/superpowers/agents/*' -delete |
|
|
||
| ```bash | ||
| find ~/.gemini/skills -type l -lname '*/superpowers/skills/*' -delete | ||
| find ~/.gemini/agents -type l -lname '*/superpowers/.gemini/agents/*' -delete |
There was a problem hiding this comment.
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.
| find ~/.gemini/agents -type l -lname '*/superpowers/.gemini/agents/*' -delete | |
| find ~/.gemini/agents -type l -lname '*/superpowers/agents/*' -delete |
| 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" |
There was a problem hiding this comment.
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.
| 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" |
| @@ -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." | |||
There was a problem hiding this comment.
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:
- "Invoke" instead of "Activate"
- Includes the "superpowers:" namespace prefix
- Uses the full skill name "brainstorming" instead of just "brainstorming skill"
This inconsistency could cause confusion about the correct way to reference skills.
| 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." |
📝 WalkthroughWalkthroughThis 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
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches
🧪 Generate unit tests (beta)
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. Comment |
There was a problem hiding this comment.
Actionable comments posted: 3
♻️ Duplicate comments (5)
docs/README.antigravity.md (2)
75-78: Wrong-lnamepattern for agent symlink removal.This was flagged in a previous review. The pattern
'*/superpowers/.gemini/agents/*'doesn't match howinstall.shcreates agent symlinks (targets are undersuperpowers/agents/, notsuperpowers/.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 tohttps://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.googleis 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 theinstall.shpath 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 -sr→python3 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/"* ]]; thenApply 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
📒 Files selected for processing (11)
.gemini/GEMINI.md.gemini/INSTALL.md.gemini/install.shREADME.mdantigravity-extension.jsoncommands/brainstorm.tomlcommands/execute-plan.tomlcommands/write-plan.tomldocs/README.antigravity.mddocs/README.gemini.mdgemini-extension.json
- 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
There was a problem hiding this comment.
Actionable comments posted: 5
♻️ Duplicate comments (1)
docs/README.antigravity.md (1)
3-3: Antigravity link still points tohttps://deepmind.googleinstead 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/. Placingantigravity-extension.jsonat 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 inimplementer.md.
agents/implementer.mdreads: "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
📒 Files selected for processing (20)
.gemini/GEMINI.md.gemini/INSTALL.md.gemini/install.shREADME.mdRELEASE-NOTES.mdagents/code-reviewer-prompt-template.mdagents/implementer-prompt-template.mdagents/implementer.mdagents/spec-reviewer-prompt-template.mdagents/spec-reviewer.mdantigravity-extension.jsondocs/README.antigravity.mddocs/README.codex.mddocs/README.gemini.mdskills/brainstorming/SKILL.mdskills/dispatching-parallel-agents/SKILL.mdskills/requesting-code-review/SKILL.mdskills/using-superpowers/SKILL.mdskills/writing-plans/SKILL.mdskills/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
| ```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 | ||
| """ | ||
| ) | ||
| ``` |
There was a problem hiding this comment.
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" |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
# First, find and inspect the antigravity-extension.json file
fd -type f -name "antigravity-extension.json" | head -20Repository: 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 -30Repository: 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 geminiRepository: 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 *.mdRepository: obra/superpowers
Length of output: 186
🏁 Script executed:
# Search all markdown files in the repository
fd -e md | head -30Repository: 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.mdRepository: 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.
| 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. |
There was a problem hiding this comment.
> [!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.
| - 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 |
There was a problem hiding this comment.
"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.
| ```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" | ||
| ``` |
There was a problem hiding this comment.
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.
| ```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().
There was a problem hiding this comment.
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
📒 Files selected for processing (4)
.gemini/INSTALL.md.gemini/install.shREADME.mddocs/README.antigravity.md
🚧 Files skipped from review as they are similar to previous changes (1)
- .gemini/install.sh
| 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 |
There was a problem hiding this comment.
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.
| 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.".
|
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 |
* fix agent teams coordination guardrails * address agent teams review feedback
Closes #267, Closes #270, Related: #128