Skip to content

Conversation

@AHGGG
Copy link

@AHGGG AHGGG commented Dec 28, 2025

Motivation and Context

This integration allows Antigravity users to access the full Superpowers skill library.

How Has This Been Tested?

Tested all CLI commands on Windows 10 with Node.js v22.12.0
Verified global workflow commands are recognized by Antigravity IDE
Verified auto bootstrap and use-skill superpowers:brainstorming work correctly

Breaking Changes

None. This is a new integration that does not affect existing Claude Code, Codex, or OpenCode implementations.

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Documentation update

Checklist

  • I have read the MCP Documentation
  • My code follows the repository's style guidelines
  • New and existing tests pass locally
  • I have added appropriate error handling
  • I have added or updated documentation as needed

Additional context

The CLI script reuses lib/skills-core.js for consistent skill discovery and parsing across all platforms
Skills directory is derived from script location (not hardcoded), enabling both local development and installed use
Tool mapping follows Antigravity's native tool names (view_file, write_to_file, run_command, browser_subagent)

Summary by CodeRabbit

  • Documentation
    • Added comprehensive Antigravity IDE integration docs: full installation and usage guide with platform-specific install steps, configuration and verification procedures, update and troubleshooting instructions, and guidance for creating and managing personal skills.
    • Added a dedicated integration guide in the docs folder and updated the README to surface Antigravity IDE usage workflows and link to the new documentation.

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai
Copy link

coderabbitai bot commented Dec 28, 2025

📝 Walkthrough

Walkthrough

Adds two Antigravity IDE usage blocks to README and introduces two new documentation files (.antigravity/INSTALL.md and docs/README.antigravity.md) providing installation, platform-specific setup, skill linking, usage examples, update procedures, and troubleshooting for integrating Superpowers into Antigravity (documentation only).

Changes

Cohort / File(s) Summary
Antigravity README updates
README.md
Two "Antigravity IDE" usage blocks added, each referencing .antigravity/INSTALL.md and linking to docs/README.antigravity.md.
Local IDE install guide
.antigravity/INSTALL.md
New installation and usage guide for Superpowers within Antigravity IDE (clone repo, copy skills to .agent/skills, configure GEMINI.md, verification commands, update procedure, global install alternative, personal skills guidance).
Detailed docs
docs/README.antigravity.md
New comprehensive documentation covering Quick Install, Manual Installation (Linux/macOS/Windows), configuring global rules, verification, usage examples mapping prompts to skills, updating, and help resources.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~2 minutes

Poem

🐇
I hopped through folders, soft and spry,
Placed neat instructions, clear and spry.
Skills are linked, the steps align—
A little hop, the docs refine. ✨

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The PR title 'feat: Add Antigravity IDE integration' accurately reflects the main change: adding documentation and integration files for Antigravity IDE support, covering INSTALL.md, README updates, and detailed integration guide.
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.


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.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🧹 Nitpick comments (5)
.antigravity/superpowers-antigravity (4)

7-17: Misleading comment about ESM support.

The comment on lines 13-14 mentions using dynamic import for ESM environments, but the code only implements CommonJS require() with no ESM fallback. Either implement the dynamic import fallback or remove the misleading comment.

🔎 Option 1: Remove misleading comment
-// Import skills-core (handle both CommonJS and ESM)
+// Import skills-core
 let skillsCore;
 try {
-    // Try CommonJS require first
     skillsCore = require('../lib/skills-core');
 } catch (e) {
-    // For environments where ESM is required, use dynamic import
-    // This is a sync workaround - in practice the require should work
     console.error('Error loading skills-core:', e.message);
     process.exit(1);
 }
🔎 Option 2: Implement actual ESM fallback
-// Import skills-core (handle both CommonJS and ESM)
+// Import skills-core
 let skillsCore;
 try {
-    // Try CommonJS require first
     skillsCore = require('../lib/skills-core');
 } catch (e) {
-    // For environments where ESM is required, use dynamic import
-    // This is a sync workaround - in practice the require should work
-    console.error('Error loading skills-core:', e.message);
-    process.exit(1);
+    console.error('CommonJS require failed, skills-core may need to be built or installed:', e.message);
+    process.exit(1);
 }

164-166: Clarify why "skills/" prefix is stripped.

Lines 164-166 remove a "skills/" prefix if present, but it's unclear when users would include this prefix. If this is for backward compatibility or a specific use case, add a comment explaining it. Otherwise, consider removing this logic to reduce complexity.


238-239: Simplify complex display name logic.

The nested ternary operator on lines 238-239 is difficult to read and maintain. Consider refactoring to an if-else statement or extracting to a helper function for clarity.

🔎 Proposed refactor
-    const displayName = forceSuperpowers ? `superpowers:${actualSkillPath}` :
-                       (skillFile.includes(personalSkillsDir) ? actualSkillPath : `superpowers:${actualSkillPath}`);
+    // Determine display name based on source
+    let displayName;
+    if (forceSuperpowers) {
+        displayName = `superpowers:${actualSkillPath}`;
+    } else if (skillFile.includes(personalSkillsDir)) {
+        displayName = actualSkillPath;
+    } else {
+        displayName = `superpowers:${actualSkillPath}`;
+    }

52-85: Document the intentional maxDepth difference between personal and superpowers skills.

Lines 60 and 68 use different maxDepth values (2 for personal skills, 1 for superpowers skills). This allows personal skills to be nested one level deeper (e.g., ~/.antigravity/skills/category/skill-name/), while superpowers skills are limited to a flat structure (e.g., ~/.antigravity/superpowers/skills/skill-name/). Add a comment explaining this design choice so future maintainers understand the intentional difference.

README.md (1)

84-86: Add language specifier to fenced code block.

The fenced code block is missing a language specifier. Since this contains instructions for the user to tell Antigravity (not actual code), use text or plaintext as the language specifier.

🔎 Proposed fix
-```
+```text
 Fetch and follow instructions from https://raw.githubusercontent.com/obra/superpowers/refs/heads/main/.antigravity/INSTALL.md

</details>

</blockquote></details>

</blockquote></details>

<details>
<summary>📜 Review details</summary>

**Configuration used**: defaults

**Review profile**: CHILL

**Plan**: Pro

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between b9e16498b9b6b06defa34cf0d6d345cd2c13ad31 and 9be9566bc7ed5c926e156ac95e76c8b0c0fe81d0.

</details>

<details>
<summary>📒 Files selected for processing (8)</summary>

* `.antigravity/INSTALL.md`
* `.antigravity/commands/brainstorm.md`
* `.antigravity/commands/execute-plan.md`
* `.antigravity/commands/write-plan.md`
* `.antigravity/superpowers-antigravity`
* `.antigravity/superpowers-bootstrap.md`
* `README.md`
* `docs/README.antigravity.md`

</details>

<details>
<summary>🧰 Additional context used</summary>

<details>
<summary>🪛 markdownlint-cli2 (0.18.1)</summary>

<details>
<summary>README.md</summary>

84-84: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

</details>

</details>

</details>

<details>
<summary>🔇 Additional comments (10)</summary><blockquote>

<details>
<summary>.antigravity/superpowers-antigravity (3)</summary><blockquote>

`31-49`: **LGTM!**

The skill printing logic correctly handles namespace prefixing (personal skills without namespace, superpowers skills with `superpowers:` prefix) and extracts/displays metadata appropriately.

---

`187-214`: **Good precedence and fallback logic.**

The skill resolution correctly implements personal-first precedence with clear user feedback about which source is being loaded. The forceSuperpowers flag properly enforces namespace when the `superpowers:` prefix is used.

---

`256-282`: **LGTM!**

The CLI entry point follows standard patterns with clear command routing and helpful usage information.

</blockquote></details>
<details>
<summary>.antigravity/INSTALL.md (2)</summary><blockquote>

`1-174`: **LGTM!**

The installation guide is comprehensive, well-organized, and provides clear platform-specific instructions for Linux/macOS and Windows. The troubleshooting section covers common issues, and the personal skills documentation helps users extend the system.

---

`50-54`: **Verify Windows bootstrap command escaping.**

Line 52 contains nested backticks within the EXTREMELY_IMPORTANT block for Windows. Verify this renders correctly in Markdown and that the escape sequence works as intended when the user copies this into their GEMINI.md file.

</blockquote></details>
<details>
<summary>docs/README.antigravity.md (1)</summary><blockquote>

`1-167`: **LGTM!**

Comprehensive documentation covering installation, usage, architecture, and troubleshooting. The architecture section clearly explains the shared skills-core module and tool mappings between Claude Code and Antigravity IDE.

</blockquote></details>
<details>
<summary>.antigravity/superpowers-bootstrap.md (1)</summary><blockquote>

`1-33`: **LGTM!**

Clear bootstrap instructions with appropriate emphasis on mandatory workflow adherence. Tool mappings are consistent with the detailed documentation, and the naming conventions clearly explain precedence rules.

</blockquote></details>
<details>
<summary>.antigravity/commands/brainstorm.md (1)</summary><blockquote>

`5-5`: **Skill name is correct and matches repository.**

The `superpowers:brainstorming` skill reference correctly corresponds to the `skills/brainstorming/` directory, which contains a valid SKILL.md configuration file.

</blockquote></details>
<details>
<summary>.antigravity/commands/write-plan.md (1)</summary><blockquote>

`5-5`: **Skill name is correct and matches the directory.**

The skill `superpowers:writing-plans` matches the actual directory `skills/writing-plans/` as defined in `SKILL.md`. No changes needed.

</blockquote></details>
<details>
<summary>.antigravity/commands/execute-plan.md (1)</summary><blockquote>

`5-5`: The skill name reference in the command is correct. The `superpowers:` prefix is the consistent namespace convention used throughout the repository for all skill references (as seen in brainstorm.md with `superpowers:brainstorming` and write-plan.md with `superpowers:writing-plans`). The directory structure uses base names like `executing-plans`, but the `use-skill` command requires the full namespace reference `superpowers:executing-plans`. No changes needed.



> Likely an incorrect or invalid review comment.

</blockquote></details>

</blockquote></details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->

@obra
Copy link
Owner

obra commented Dec 29, 2025

I'd love to have a couple antigravity users test this out. (Also, it needs to be not windows-specific before we can really consider it for merge)

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🧹 Nitpick comments (5)
.antigravity/INSTALL.md (2)

77-101: Consider adding language specifiers to code blocks.

The static analysis tool flags these code blocks as missing language specifiers. Since these are instructions to type into Antigravity IDE, you could use text or plaintext as the language identifier for consistency.

🔎 Suggested fix
-```
+```text
 Run node ~/.antigravity/superpowers/.antigravity/superpowers-antigravity find-skills to show available skills

Apply similar changes to other unlabeled code blocks at lines 87, 93, and 99.
</details>

---

`180-181`: **Convert bare URLs to proper markdown links.**

Per the linter, bare URLs should use markdown link syntax for better rendering and accessibility.



<details>
<summary>🔎 Suggested fix</summary>

```diff
-- Report issues: https://github.com/obra/superpowers/issues
-- Main documentation: https://github.com/obra/superpowers
+- Report issues: [GitHub Issues](https://github.com/obra/superpowers/issues)
+- Main documentation: [Superpowers Repository](https://github.com/obra/superpowers)
.antigravity/superpowers-antigravity (3)

7-17: The ESM fallback comment is misleading.

The comment suggests a fallback to dynamic import for ESM environments, but the catch block just exits. This is fine behavior (CommonJS require should work for this use case), but the comment implies functionality that doesn't exist. Consider updating the comment to reflect actual behavior.

🔎 Suggested fix
 // Import skills-core (handle both CommonJS and ESM)
 let skillsCore;
 try {
-    // Try CommonJS require first
     skillsCore = require('../lib/skills-core');
 } catch (e) {
-    // For environments where ESM is required, use dynamic import
-    // This is a sync workaround - in practice the require should work
+    // skills-core module is required for this CLI to function
     console.error('Error loading skills-core:', e.message);
     process.exit(1);
 }

237-239: Fragile path comparison using includes().

Using skillFile.includes(personalSkillsDir) for path comparison can produce incorrect results due to case sensitivity on Windows or partial path matches. Consider tracking the source type from where the skill was found instead.

🔎 Suggested fix

Track the source when the skill is found:

     let skillFile = null;
+    let foundInPersonal = false;

     // If superpowers: namespace was used, only check superpowers skills
     if (forceSuperpowers) {
         // ... existing code ...
     } else {
         // First check personal skills directory (takes precedence)
         if (fs.existsSync(personalSkillsDir)) {
             const personalPath = path.join(personalSkillsDir, actualSkillPath);
             skillFile = findSkillFile(personalPath);
             if (skillFile) {
+                foundInPersonal = true;
                 console.log(`# Loading personal skill: ${actualSkillPath}`);
                 // ...
             }
         }
         // ...
     }

     // Later, use foundInPersonal instead of includes()
     const displayName = forceSuperpowers ? `superpowers:${actualSkillPath}` :
-                       (skillFile.includes(personalSkillsDir) ? actualSkillPath : `superpowers:${actualSkillPath}`);
+                       (foundInPersonal ? actualSkillPath : `superpowers:${actualSkillPath}`);

176-179: Potentially dead code - path check for SKILL.md suffix.

The check searchPath.endsWith('SKILL.md') at line 177 appears unreachable given current usage. searchPath is always constructed from path.join(dir, actualSkillPath) where actualSkillPath is the skill name without file extension. This could be leftover from refactoring.

🔎 Suggested removal
     function findSkillFile(searchPath) {
         // Check for exact match with SKILL.md
         const skillMdPath = path.join(searchPath, 'SKILL.md');
         if (fs.existsSync(skillMdPath)) {
             return skillMdPath;
         }

-        // Check for direct SKILL.md file
-        if (searchPath.endsWith('SKILL.md') && fs.existsSync(searchPath)) {
-            return searchPath;
-        }
-
         return null;
     }
📜 Review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 9be9566 and 437eecd.

📒 Files selected for processing (2)
  • .antigravity/INSTALL.md
  • .antigravity/superpowers-antigravity
🧰 Additional context used
🪛 markdownlint-cli2 (0.18.1)
.antigravity/INSTALL.md

77-77: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


87-87: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


93-93: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


99-99: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


180-180: Bare URL used

(MD034, no-bare-urls)


181-181: Bare URL used

(MD034, no-bare-urls)

🔇 Additional comments (5)
.antigravity/INSTALL.md (1)

1-181: Documentation is well-structured with cross-platform coverage.

The installation guide properly addresses both Linux/macOS and Windows environments, which aligns with the reviewer feedback about cross-platform support. The documentation is comprehensive and covers prerequisites, installation, usage, updating, and troubleshooting.

.antigravity/superpowers-antigravity (4)

19-28: Path handling is properly cross-platform.

Good use of path.resolve, path.join, and os.homedir() for platform-independent path construction. This addresses the reviewer's concern about Windows-specific implementation.


87-139: Bootstrap function is well-structured with proper error handling.

Good defensive coding with fs.existsSync check and try-catch around file reading. The update check with timeout protection and auto-loading of the getting-started skill provides a good user experience.


256-282: CLI entrypoint is clean and well-structured.

The command parsing and switch statement provide a clear interface. The default help output is informative with good examples.


60-74: Clarify the intentional depth difference for skill searches.

Personal skills are searched with maxDepth=2 while superpowers skills use maxDepth=1. All current superpowers SKILL.md files are located at depth 2 (e.g., skills/brainstorming/SKILL.md), so both work today. However, this asymmetry is unexplained and could cause problems if either skill directory structure nests deeper in the future. Is this depth difference intentional, or should both use the same depth?

Comment on lines 31 to 49
function printSkill(skillPath, sourceType) {
const skillFile = path.join(skillPath, 'SKILL.md');
const relPath = sourceType === 'personal'
? path.relative(personalSkillsDir, skillPath)
: path.relative(superpowersSkillsDir, skillPath);

// Print skill name with namespace
if (sourceType === 'personal') {
console.log(relPath.replace(/\\/g, '/')); // Personal skills are not namespaced
} else {
console.log(`superpowers:${relPath.replace(/\\/g, '/')}`); // Superpowers skills get superpowers namespace
}

// Extract and print metadata
const { name, description } = skillsCore.extractFrontmatter(skillFile);

if (description) console.log(` ${description}`);
console.log('');
}
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Missing error handling for frontmatter extraction.

skillsCore.extractFrontmatter could throw if the file doesn't exist or is unreadable. Since this is called in a loop from runFindSkills, one bad skill file would crash the entire listing.

Also, name is extracted but unused on line 45.

🔎 Suggested fix
 function printSkill(skillPath, sourceType) {
     const skillFile = path.join(skillPath, 'SKILL.md');
     const relPath = sourceType === 'personal'
         ? path.relative(personalSkillsDir, skillPath)
         : path.relative(superpowersSkillsDir, skillPath);

     // Print skill name with namespace
     if (sourceType === 'personal') {
         console.log(relPath.replace(/\\/g, '/')); // Personal skills are not namespaced
     } else {
         console.log(`superpowers:${relPath.replace(/\\/g, '/')}`); // Superpowers skills get superpowers namespace
     }

     // Extract and print metadata
-    const { name, description } = skillsCore.extractFrontmatter(skillFile);
-
-    if (description) console.log(`  ${description}`);
+    try {
+        const { description } = skillsCore.extractFrontmatter(skillFile);
+        if (description) console.log(`  ${description}`);
+    } catch (error) {
+        console.log(`  (Unable to read metadata: ${error.message})`);
+    }
     console.log('');
 }
🤖 Prompt for AI Agents
In .antigravity/superpowers-antigravity around lines 31 to 49, wrap the call to
skillsCore.extractFrontmatter(skillFile) in a try/catch so a bad or unreadable
SKILL.md does not crash the whole run; on catch, log a warning including the
skill path and the error, then return/continue so listing proceeds. Also either
use the extracted name (e.g., print the name alongside the path or before the
description) or stop extracting it if not needed; ensure no unused variables
remain.

Comment on lines 163 to 166
// Remove "skills/" prefix if present
if (actualSkillPath.startsWith('skills/')) {
actualSkillPath = actualSkillPath.substring('skills/'.length);
}
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Potential path traversal vulnerability.

User-supplied skillName is used to construct file paths without sanitization. A malicious skill name like ../../../etc/passwd could potentially access files outside the intended directories.

🔎 Suggested fix

Add path validation after normalizing the skill path:

     // Remove "skills/" prefix if present
     if (actualSkillPath.startsWith('skills/')) {
         actualSkillPath = actualSkillPath.substring('skills/'.length);
     }

+    // Validate path doesn't escape the skills directories
+    const normalizedPath = path.normalize(actualSkillPath);
+    if (normalizedPath.startsWith('..') || path.isAbsolute(normalizedPath)) {
+        console.log(`Error: Invalid skill name: ${skillName}`);
+        return;
+    }
+    actualSkillPath = normalizedPath;
+
     // Function to find skill file

Committable suggestion skipped: line range outside the PR's diff.

🤖 Prompt for AI Agents
In .antigravity/superpowers-antigravity around lines 163-166, the code strips a
"skills/" prefix but does not validate the resulting skill path, allowing path
traversal (e.g. "../../../etc/passwd"); normalize the incoming skillName then
validate it: call path.normalize on the combined/trimmed skill path, reject
absolute paths and any normalized path that contains ".." segments or whose
resolved path is outside the intended base skills directory (use
path.resolve(baseSkillsDir, normalizedSkillPath) and ensure the resolved
path.startsWith(path.resolve(baseSkillsDir) + path.sep)). If validation fails,
throw or return an error; otherwise proceed using the sanitized normalized path.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🧹 Nitpick comments (2)
.antigravity/INSTALL.md (2)

77-79: Add language specifiers to code blocks for markdown consistency.

The fenced code blocks on these lines are missing language specifiers (e.g., ```bash, ```powershell). This improves readability and syntax highlighting in documentation renderers.

🔎 Proposed fixes
- ```
+ ```bash
  Run node ~/.antigravity/superpowers/.antigravity/superpowers-antigravity find-skills to show available skills
- ```
+ ```

- ```
+ ```bash
  Run ~/.antigravity/superpowers/.antigravity/superpowers-antigravity find-skills
- ```
+ ```

- ```
+ ```bash
  Run ~/.antigravity/superpowers/.antigravity/superpowers-antigravity use-skill superpowers:brainstorming
- ```
+ ```

- ```
+ ```bash
  Run ~/.antigravity/superpowers/.antigravity/superpowers-antigravity bootstrap
- ```
+ ```

Also applies to: 87-89, 93-95, 99-101


180-181: Wrap bare URLs in markdown link syntax.

Lines 180–181 contain bare URLs that should be wrapped in markdown link syntax for consistency and proper formatting in rendered documentation.

🔎 Proposed fixes
- Report issues: https://github.com/obra/superpowers/issues
- Main documentation: https://github.com/obra/superpowers
+ Report issues: [GitHub Issues](https://github.com/obra/superpowers/issues)
+ Main documentation: [GitHub Repository](https://github.com/obra/superpowers)
📜 Review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 437eecd and a6186fb.

📒 Files selected for processing (1)
  • .antigravity/INSTALL.md
🧰 Additional context used
🪛 markdownlint-cli2 (0.18.1)
.antigravity/INSTALL.md

77-77: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


87-87: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


93-93: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


99-99: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


180-180: Bare URL used

(MD034, no-bare-urls)


181-181: Bare URL used

(MD034, no-bare-urls)

🔇 Additional comments (1)
.antigravity/INSTALL.md (1)

1-141: Excellent cross-platform documentation structure.

The documentation provides parallel installation, configuration, and usage instructions for both Linux/macOS and Windows (PowerShell) throughout, directly addressing the cross-platform requirement. Sections on verification, personal skills, updating, and troubleshooting (including Windows-specific path issues) are comprehensive and well-organized.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

♻️ Duplicate comments (2)
.antigravity/superpowers-antigravity (2)

31-49: Still missing error handling for frontmatter extraction.

This issue was flagged in a previous review but remains unaddressed. skillsCore.extractFrontmatter on line 45 can throw if the file is unreadable, which would crash the entire skill listing. Additionally, the name variable is extracted but never used.


163-166: Path traversal vulnerability remains unaddressed.

This critical security issue was flagged in a previous review but has not been fixed. User-supplied skillName is used to construct file paths without sanitization. A malicious skill name like ../../etc/passwd could potentially access files outside the intended directories.

🧹 Nitpick comments (4)
.antigravity/superpowers-antigravity (4)

7-17: Misleading comment about ESM fallback.

The comment on lines 13-14 suggests an ESM fallback is implemented, but the code only exits on error. Either implement the dynamic import fallback or update the comment to reflect that CommonJS is required.

🔎 Suggested fix
 // Import skills-core (handle both CommonJS and ESM)
 let skillsCore;
 try {
-    // Try CommonJS require first
+    // Load skills-core via CommonJS require
     skillsCore = require('../lib/skills-core');
 } catch (e) {
-    // For environments where ESM is required, use dynamic import
-    // This is a sync workaround - in practice the require should work
     console.error('Error loading skills-core:', e.message);
     process.exit(1);
 }

60-74: Add error handling for skill discovery.

If skillsCore.findSkillsInDir throws an exception (e.g., due to permission issues), the entire command will crash. Consider wrapping the calls in try-catch blocks to gracefully handle errors.

🔎 Suggested fix
     const foundSkills = new Set();

     // Find personal skills first (these take precedence)
-    const personalSkills = skillsCore.findSkillsInDir(personalSkillsDir, 'personal', 2);
-    for (const skill of personalSkills) {
-        const relPath = path.relative(personalSkillsDir, skill.path);
-        foundSkills.add(relPath);
-        printSkill(skill.path, 'personal');
+    try {
+        const personalSkills = skillsCore.findSkillsInDir(personalSkillsDir, 'personal', 2);
+        for (const skill of personalSkills) {
+            const relPath = path.relative(personalSkillsDir, skill.path);
+            foundSkills.add(relPath);
+            printSkill(skill.path, 'personal');
+        }
+    } catch (error) {
+        console.log(`Warning: Unable to read personal skills: ${error.message}`);
     }

     // Find superpowers skills (only if not already found in personal)
-    const superpowersSkills = skillsCore.findSkillsInDir(superpowersSkillsDir, 'superpowers', 1);
-    for (const skill of superpowersSkills) {
-        const relPath = path.relative(superpowersSkillsDir, skill.path);
-        if (!foundSkills.has(relPath)) {
-            printSkill(skill.path, 'superpowers');
+    try {
+        const superpowersSkills = skillsCore.findSkillsInDir(superpowersSkillsDir, 'superpowers', 1);
+        for (const skill of superpowersSkills) {
+            const relPath = path.relative(superpowersSkillsDir, skill.path);
+            if (!foundSkills.has(relPath)) {
+                printSkill(skill.path, 'superpowers');
+            }
         }
+    } catch (error) {
+        console.log(`Warning: Unable to read superpowers skills: ${error.message}`);
     }

80-80: Documentation path may not match runtime path.

Line 80 states superpowers skills are "from ~/.antigravity/superpowers/skills/" but the code derives superpowersSkillsDir from the script location (pluginRoot), which may differ if the plugin is installed elsewhere. Consider making the documentation more generic or dynamically showing the actual path.

🔎 Suggested fix
     console.log('Skill naming:');
-    console.log('  Superpowers skills: superpowers:skill-name (from ~/.antigravity/superpowers/skills/)');
+    console.log(`  Superpowers skills: superpowers:skill-name (from ${superpowersSkillsDir})`);
     console.log('  Personal skills: skill-name (from ~/.antigravity/skills/)');

92-101: Add error handling for update check.

The call to skillsCore.checkForUpdates on line 93 lacks error handling. If it throws an exception (e.g., network issues, git errors), the entire bootstrap will fail. Wrap it in a try-catch block to gracefully handle errors.

🔎 Suggested fix
     // Check for updates (with timeout protection)
-    if (skillsCore.checkForUpdates(superpowersRepoDir)) {
-        console.log('## Update Available');
-        console.log('');
-        console.log('⚠️  Your superpowers installation is behind the latest version.');
-        console.log('To update, run: `cd ~/.antigravity/superpowers && git pull`');
-        console.log('');
-        console.log('---');
-        console.log('');
+    try {
+        if (skillsCore.checkForUpdates(superpowersRepoDir)) {
+            console.log('## Update Available');
+            console.log('');
+            console.log('⚠️  Your superpowers installation is behind the latest version.');
+            console.log('To update, run: `cd ~/.antigravity/superpowers && git pull`');
+            console.log('');
+            console.log('---');
+            console.log('');
+        }
+    } catch (error) {
+        console.log(`Warning: Unable to check for updates: ${error.message}`);
+        console.log('');
     }
📜 Review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 016f30c and 26c12be.

📒 Files selected for processing (2)
  • .antigravity/superpowers-antigravity
  • .antigravity/superpowers-bootstrap.md
🚧 Files skipped from review as they are similar to previous changes (1)
  • .antigravity/superpowers-bootstrap.md
🔇 Additional comments (1)
.antigravity/superpowers-antigravity (1)

1-282: Cross-platform compatibility appears sound.

The PR reviewer raised concerns about Windows-specific implementation, but the code uses Node.js's cross-platform path module throughout (path.join, path.resolve, path.relative, __dirname). The backslash-to-forward-slash replacement on lines 39 and 41 ensures consistent output across platforms rather than being Windows-specific. The script should work correctly on Unix, Linux, and macOS.

To confirm cross-platform compatibility, please test the CLI on Unix/Linux/macOS systems with the following scenarios:

  1. Run superpowers-antigravity bootstrap
  2. Run superpowers-antigravity find-skills
  3. Run superpowers-antigravity use-skill superpowers:brainstorming

Ensure path handling works correctly and no Windows-specific behaviors emerge.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

♻️ Duplicate comments (2)
.antigravity/superpowers-antigravity (2)

31-49: Missing error handling for frontmatter extraction.

The call to skillsCore.extractFrontmatter(skillFile) on line 45 lacks error handling. If a skill file is missing, unreadable, or malformed, it will crash the entire listing operation. Additionally, the extracted name variable is unused.

🔎 Suggested fix
 function printSkill(skillPath, sourceType) {
     const skillFile = path.join(skillPath, 'SKILL.md');
     const relPath = sourceType === 'personal'
         ? path.relative(personalSkillsDir, skillPath)
         : path.relative(superpowersSkillsDir, skillPath);
 
     // Print skill name with namespace
     if (sourceType === 'personal') {
         console.log(relPath.replace(/\\/g, '/')); // Personal skills are not namespaced
     } else {
         console.log(`superpowers:${relPath.replace(/\\/g, '/')}`); // Superpowers skills get superpowers namespace
     }
 
     // Extract and print metadata
-    const { name, description } = skillsCore.extractFrontmatter(skillFile);
-
-    if (description) console.log(`  ${description}`);
+    try {
+        const { description } = skillsCore.extractFrontmatter(skillFile);
+        if (description) console.log(`  ${description}`);
+    } catch (error) {
+        console.log(`  (Unable to read metadata: ${error.message})`);
+    }
     console.log('');
 }

141-214: Path traversal vulnerability in skill name handling.

User-supplied skillName (via command-line argument) is used to construct file paths without proper sanitization. After stripping prefixes (lines 156-166), a malicious skill name like ../../etc/passwd could access files outside the intended skill directories.

🔎 Suggested fix

Add path validation after normalizing:

     // Remove "skills/" prefix if present
     if (actualSkillPath.startsWith('skills/')) {
         actualSkillPath = actualSkillPath.substring('skills/'.length);
     }
 
+    // Validate path doesn't escape skill directories
+    const normalizedPath = path.normalize(actualSkillPath);
+    if (normalizedPath.includes('..') || path.isAbsolute(normalizedPath)) {
+        console.log(`Error: Invalid skill name: ${skillName}`);
+        console.log('Skill names must be relative paths within the skills directory.');
+        return;
+    }
+    actualSkillPath = normalizedPath;
+
     // Function to find skill file
🧹 Nitpick comments (4)
.antigravity/INSTALL.md (3)

14-55: Consider consistent command format across platforms.

The bootstrap command format differs between platforms:

  • Line 38 (Linux/macOS): relies on shebang with ~/.antigravity/superpowers/.antigravity/superpowers-antigravity bootstrap
  • Line 52 (Windows): explicitly uses node prefix

However, Line 80 (verification) uses node prefix for both platforms. For consistency and reliability across different shell environments, consider explicitly using node for all platforms in the configuration examples.

</comment_end>


79-81: Optional: Add language identifier to code block.

For better syntax highlighting, consider adding a language identifier (e.g., text or bash) to the code block, though this is a minor documentation formatting preference.

</comment_end>


180-183: Optional: Format URLs as proper Markdown links.

The bare URLs could be formatted as proper Markdown links for better presentation:

 ## Getting Help
 
-- Report issues: https://github.com/obra/superpowers/issues
-- Main documentation: https://github.com/obra/superpowers
+- [Report issues](https://github.com/obra/superpowers/issues)
+- [Main documentation](https://github.com/obra/superpowers)
.antigravity/superpowers-antigravity (1)

7-17: ESM fallback is not implemented.

The comment on lines 13-14 mentions using dynamic import as a fallback for ESM environments, but the code simply exits on error. If ESM support is intended, the fallback should be implemented. If not needed, remove the misleading comment.

🔎 Simplified error handling
 // Import skills-core (handle both CommonJS and ESM)
 let skillsCore;
 try {
-    // Try CommonJS require first
     skillsCore = require('../lib/skills-core');
 } catch (e) {
-    // For environments where ESM is required, use dynamic import
-    // This is a sync workaround - in practice the require should work
     console.error('Error loading skills-core:', e.message);
+    console.error('Please ensure the superpowers installation is complete.');
     process.exit(1);
 }
📜 Review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 26c12be and 1f68854.

📒 Files selected for processing (2)
  • .antigravity/INSTALL.md
  • .antigravity/superpowers-antigravity
🧰 Additional context used
🪛 markdownlint-cli2 (0.18.1)
.antigravity/INSTALL.md

79-79: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


89-89: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


95-95: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


101-101: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


182-182: Bare URL used

(MD034, no-bare-urls)


183-183: Bare URL used

(MD034, no-bare-urls)

Comment on lines 87 to 103
### Finding Skills

```
Run ~/.antigravity/superpowers/.antigravity/superpowers-antigravity find-skills
```

### Loading a Skill

```
Run ~/.antigravity/superpowers/.antigravity/superpowers-antigravity use-skill superpowers:brainstorming
```

### Bootstrap All Skills

```
Run ~/.antigravity/superpowers/.antigravity/superpowers-antigravity bootstrap
```
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Cross-platform issue: Usage examples may not work on Windows.

The usage examples (lines 90, 96, 102) don't include the node prefix, relying on the shebang line. This approach won't work on Windows PowerShell or CMD, where the shebang is ignored. Given the PR reviewer's feedback about cross-platform compatibility, these examples should consistently use node prefix for all platforms, matching the verification section format (line 80).

🔎 Suggested fix
 ### Finding Skills
 
-```
-Run ~/.antigravity/superpowers/.antigravity/superpowers-antigravity find-skills
+```bash
+node ~/.antigravity/superpowers/.antigravity/superpowers-antigravity find-skills

Loading a Skill

- -Run ~/.antigravity/superpowers/.antigravity/superpowers-antigravity use-skill superpowers:brainstorming +bash
+node ~/.antigravity/superpowers/.antigravity/superpowers-antigravity use-skill superpowers:brainstorming


### Bootstrap All Skills

-```
-Run ~/.antigravity/superpowers/.antigravity/superpowers-antigravity bootstrap
+```bash
+node ~/.antigravity/superpowers/.antigravity/superpowers-antigravity bootstrap
</details>

<!-- suggestion_start -->

<details>
<summary>📝 Committable suggestion</summary>

> ‼️ **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.

```suggestion
### Finding Skills

🧰 Tools
🪛 markdownlint-cli2 (0.18.1)

89-89: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


95-95: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


101-101: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
.antigravity/INSTALL.md around lines 87 to 103: the three usage examples rely on
the shebang and won't work on Windows; update each example to prefix the
executable with "node " (e.g., node
~/.antigravity/superpowers/.antigravity/superpowers-antigravity ...) and ensure
the examples use the same bash code block formatting as the verification section
so they are cross-platform consistent.

@hopewithoute
Copy link

I'd love to have a couple antigravity users test this out. (Also, it needs to be not windows-specific before we can really consider it for merge)

Its kinda worked ish on antigravity, just need to ask load superpower at session start, but the q&a is skipped so the review flow is done using implementation plan comment

**Windows (PowerShell):**
```powershell
New-Item -ItemType Directory -Force -Path "$env:USERPROFILE\.gemini\antigravity\global_workflows"
Copy-Item "$env:USERPROFILE\.antigravity\superpowers\.antigravity\commands\*.md" "$env:USERPROFILE\.gemini\antigravity\global_workflows\"

Choose a reason for hiding this comment

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

Unsure if this is just a me case as I didn't look into this further but this path is $env:USERPROFILE\.antigravity\superpowers\commands\*.md for my system windows 11

Copy link
Author

Choose a reason for hiding this comment

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

The command for antigravity is a little bit different, so I changed and copied three commands to $env:USERPROFILE\.antigravity\superpowers\.antigravity\commands\*.md.

@IshizuEitaro
Copy link

IshizuEitaro commented Jan 8, 2026

Just tried Antigravity and this. It works well on my end, but users need to change Terminal default profile first.

Win 11

EDIT:
Antigravity automatically reads GEMINI.md instruction and runs Superpowers bootstrap. I don't need to ask anything.

**Linux/macOS:**
```bash
mkdir -p ~/.gemini/antigravity/global_workflows
cp ~/.antigravity/superpowers/.antigravity/commands/*.md ~/.gemini/antigravity/global_workflows/

Choose a reason for hiding this comment

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

I'm change ~/.antigravity/superpowers/.antigravity/commands/*.md to ~/.antigravity/superpowers/commands/*.md on my macOS to copy successful

@hopewithoute
Copy link

Might be relevant, https://antigravity.google/docs/skills Ag release their own skill system

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🤖 Fix all issues with AI agents
In `@docs/README.antigravity.md`:
- Around line 86-96: Add Windows PowerShell equivalents to the Personal Skills
section: keep the existing bash block and add a PowerShell block that uses
Remove-Item to delete the existing .agent\skills, New-Item to create the
directory, cmd /c mklink /J to create a junction for the superpowers
subdirectory, and New-Item to create the my-skill folder; place the new
PowerShell snippet immediately after the bash snippet in the "Personal Skills"
section so Windows users have step-by-step parity with the Linux/macOS
instructions.
- Around line 113-116: The README's Updating section only shows Bash commands
for pulling updates; add a Windows PowerShell equivalent so Windows users have
platform-specific instructions. Modify the code block that currently contains
the Bash snippet ("cd ~/.gemini/antigravity/superpowers" and "git pull") to
include a second subsection titled "Windows (PowerShell):" with the PowerShell
commands to change to the user's .gemini\antigravity\superpowers folder using
$env:USERPROFILE and run "git pull", keeping the existing Bash block intact and
preserving the note about symlinks.
🧹 Nitpick comments (2)
docs/README.antigravity.md (2)

9-11: Add language specifier to fenced code block.

The fenced code block is missing a language identifier. While this appears to be plain text instructions for the user to paste into Antigravity, adding text or plaintext as the language specifier would resolve the linting warning and improve clarity.

📝 Suggested fix
-```
+```text
 Fetch and follow instructions from https://raw.githubusercontent.com/obra/superpowers/refs/heads/main/.antigravity/INSTALL.md
</details>

---

`122-123`: **Format URLs as markdown links.**

The bare URLs trigger markdown linting warnings. Consider formatting them as proper markdown links for better rendering and compliance with markdown best practices.



<details>
<summary>📝 Suggested fix</summary>

```diff
 ## Getting Help
 
-- Report issues: https://github.com/obra/superpowers/issues
-- Main documentation: https://github.com/obra/superpowers
+- [Report issues](https://github.com/obra/superpowers/issues)
+- [Main documentation](https://github.com/obra/superpowers)
📜 Review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 1f68854 and 811bafa.

📒 Files selected for processing (2)
  • .antigravity/INSTALL.md
  • docs/README.antigravity.md
🚧 Files skipped from review as they are similar to previous changes (1)
  • .antigravity/INSTALL.md
🧰 Additional context used
🪛 markdownlint-cli2 (0.18.1)
docs/README.antigravity.md

9-9: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


122-122: Bare URL used

(MD034, no-bare-urls)


123-123: Bare URL used

(MD034, no-bare-urls)

✏️ Tip: You can disable this entire section by setting review_details to false in your review settings.

Comment on lines 86 to 88
```bash
# Remove the symlink and create a directory
rm .agent/skills
mkdir -p .agent/skills

# Link superpowers as a subdirectory
ln -sf ~/.gemini/antigravity/superpowers/skills .agent/skills/superpowers

# Add personal skills
mkdir -p .agent/skills/my-skill
```
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Provide Windows equivalents for personal skills setup.

The Personal Skills section only includes bash commands, but earlier sections consistently provided both Linux/macOS and Windows instructions. This inconsistency prevents Windows users from following the personal skills setup.

📝 Suggested fix to add Windows commands
 To add personal skills alongside superpowers:
 
+**Linux/macOS:**
 ```bash
 # Remove the symlink and create a directory
 rm .agent/skills
 mkdir -p .agent/skills
 
 # Link superpowers as a subdirectory
 ln -sf ~/.gemini/antigravity/superpowers/skills .agent/skills/superpowers
 
 # Add personal skills
 mkdir -p .agent/skills/my-skill

+Windows (PowerShell as Administrator):
+powershell +# Remove the symlink and create a directory +Remove-Item ".agent\skills" -Force +New-Item -ItemType Directory -Force -Path ".agent\skills" + +# Link superpowers as a subdirectory +cmd /c mklink /J ".agent\skills\superpowers" "$env:USERPROFILE\.gemini\antigravity\superpowers\skills" + +# Add personal skills +New-Item -ItemType Directory -Force -Path ".agent\skills\my-skill" +

Create .agent/skills/my-skill/SKILL.md:

</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

In @docs/README.antigravity.md around lines 86 - 96, Add Windows PowerShell
equivalents to the Personal Skills section: keep the existing bash block and add
a PowerShell block that uses Remove-Item to delete the existing .agent\skills,
New-Item to create the directory, cmd /c mklink /J to create a junction for the
superpowers subdirectory, and New-Item to create the my-skill folder; place the
new PowerShell snippet immediately after the bash snippet in the "Personal
Skills" section so Windows users have step-by-step parity with the Linux/macOS
instructions.


</details>

<!-- fingerprinting:phantom:triton:puma -->

<!-- This is an auto-generated comment by CodeRabbit -->

Comment on lines +113 to +108
```bash
cd ~/.gemini/antigravity/superpowers
git pull
```
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Provide Windows equivalents for update commands.

The Updating section only provides bash commands, inconsistent with the platform-specific approach used throughout the rest of the documentation. Windows users need equivalent PowerShell commands.

📝 Suggested fix to add Windows commands
 ## Updating
 
+**Linux/macOS:**
 ```bash
 cd ~/.gemini/antigravity/superpowers
 git pull

+Windows (PowerShell):
+powershell +cd "$env:USERPROFILE\.gemini\antigravity\superpowers" +git pull +

Symlinks automatically reflect the latest changes.

</details>

<!-- suggestion_start -->

<details>
<summary>📝 Committable suggestion</summary>

> ‼️ **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.

```suggestion
## Updating

**Linux/macOS:**
🤖 Prompt for AI Agents
In `@docs/README.antigravity.md` around lines 113 - 116, The README's Updating
section only shows Bash commands for pulling updates; add a Windows PowerShell
equivalent so Windows users have platform-specific instructions. Modify the code
block that currently contains the Bash snippet ("cd
~/.gemini/antigravity/superpowers" and "git pull") to include a second
subsection titled "Windows (PowerShell):" with the PowerShell commands to change
to the user's .gemini\antigravity\superpowers folder using $env:USERPROFILE and
run "git pull", keeping the existing Bash block intact and preserving the note
about symlinks.

@AHGGG
Copy link
Author

AHGGG commented Jan 15, 2026

Might be relevant, https://antigravity.google/docs/skills Ag release their own skill system

Refactored to support Antigravity's native Skills integration.
During verification, I found that the global installation path (~/.gemini/antigravity/skills) wasn't consistently recognized by the IDE. Therefore, the documentation has been updated to recommend the workspace-level installation (.agent/skills), which has been verified to work correctly.

- Remove CLI wrapper (superpowers-antigravity)
- Remove bootstrap file (superpowers-bootstrap.md)
- Remove workflow commands (commands/*.md)
- Rewrite INSTALL.md with agent-executable instructions
- Default installation to .agent/skills (workspace-level)
- Add global installation as alternative option
- Update docs/README.antigravity.md accordingly"
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 3

🤖 Fix all issues with AI agents
In `@docs/README.antigravity.md`:
- Around line 9-11: The fenced code block containing the URL line "Fetch and
follow instructions from
https://raw.githubusercontent.com/obra/superpowers/refs/heads/main/.antigravity/INSTALL.md"
lacks a language identifier; update that fenced code block (the triple-backtick
block that wraps the URL) to include a language tag such as text or plaintext
(e.g., change ``` to ```text) so the snippet renders with proper syntax
highlighting.
- Around line 114-115: Replace the bare URLs with proper Markdown link syntax:
change "Report issues: https://github.com/obra/superpowers/issues" to use a
labeled link like "Report issues: [Superpowers
issues](https://github.com/obra/superpowers/issues)" and change "Main
documentation: https://github.com/obra/superpowers" to a labeled link like "Main
documentation: [Superpowers repo](https://github.com/obra/superpowers)"; ensure
both links render correctly in README.antigravity.md.
- Line 110: Update the "Then re-copy the skills folder to your project."
instruction to include explicit platform-specific copy commands: add a
Unix/macOS/Linux cp command example to copy from
~/.gemini/antigravity/superpowers/skills into .agent/skills and a Windows
PowerShell Copy-Item -Recurse example using $env:USERPROFILE to source the same
path into .agent\skills so users have exact commands to run after pulling
updates.
♻️ Duplicate comments (2)
docs/README.antigravity.md (2)

86-88: Provide Windows equivalents for personal skills setup.

The Personal Skills section only includes bash commands, but earlier sections consistently provided both Linux/macOS and Windows instructions. This inconsistency prevents Windows users from following the personal skills setup.

📝 Suggested fix to add Windows commands
 To add personal skills, create new skill folders in `.agent/skills/`:
 
+**Linux/macOS:**
 ```bash
 mkdir -p .agent/skills/my-skill

+Windows (PowerShell):
+powershell +New-Item -ItemType Directory -Force -Path ".agent\skills\my-skill" +

Create .agent/skills/my-skill/SKILL.md:

</details>

---

`105-108`: **Provide Windows equivalents for update commands.**

The Updating section only provides bash commands, inconsistent with the platform-specific approach used throughout the rest of the documentation. Windows users need equivalent PowerShell commands.



<details>
<summary>📝 Suggested fix to add Windows commands</summary>

```diff
 ## Updating
 
+**Linux/macOS:**
 ```bash
 cd ~/.gemini/antigravity/superpowers
 git pull

+Windows (PowerShell):
+powershell +cd "$env:USERPROFILE\.gemini\antigravity\superpowers" +git pull +

Then re-copy the skills folder to your project.

</details>

</blockquote></details>

</blockquote></details>

<details>
<summary>📜 Review details</summary>

**Configuration used**: defaults

**Review profile**: CHILL

**Plan**: Pro

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between 811bafa9f7cb17b439706c4f6b3dc4dc3a3b493f and 2cf325eb320c5d313b72251d75c9b376e0e9cfce.

</details>

<details>
<summary>📒 Files selected for processing (2)</summary>

* `.antigravity/INSTALL.md`
* `docs/README.antigravity.md`

</details>

<details>
<summary>✅ Files skipped from review due to trivial changes (1)</summary>

* .antigravity/INSTALL.md

</details>

<details>
<summary>🧰 Additional context used</summary>

<details>
<summary>🪛 markdownlint-cli2 (0.18.1)</summary>

<details>
<summary>docs/README.antigravity.md</summary>

9-9: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

---

114-114: Bare URL used

(MD034, no-bare-urls)

---

115-115: Bare URL used

(MD034, no-bare-urls)

</details>

</details>

</details>

<details>
<summary>🔇 Additional comments (3)</summary><blockquote>

<details>
<summary>docs/README.antigravity.md (3)</summary><blockquote>

`13-54`: **LGTM! Comprehensive cross-platform installation instructions.**

The manual installation section provides clear, platform-specific commands for both Linux/macOS and Windows users. The paths and commands are correct and consistent.

---

`56-63`: **LGTM! Clear usage examples.**

The usage section provides concrete, easy-to-understand examples of context-based skill activation.

---

`66-78`: **LGTM! Consistent cross-platform global installation instructions.**

The global installation section maintains platform-specific command parity with the rest of the document.

</blockquote></details>

</blockquote></details>

<sub>✏️ Tip: You can disable this entire section by setting `review_details` to `false` in your review settings.</sub>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->

git pull
```

Then re-copy the skills folder to your project.
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Provide complete re-copy commands after update.

Line 110 instructs users to "re-copy the skills folder" but doesn't show how. This leaves users without clear next steps after pulling updates.

📝 Suggested fix to add platform-specific copy commands
-Then re-copy the skills folder to your project.
+Then re-copy the skills folder to your project:
+
+**Linux/macOS:**
+```bash
+cp -r ~/.gemini/antigravity/superpowers/skills .agent/skills
+```
+
+**Windows (PowerShell):**
+```powershell
+Copy-Item -Recurse -Force "$env:USERPROFILE\.gemini\antigravity\superpowers\skills" ".agent\skills"
+```
📝 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
Then re-copy the skills folder to your project.
Then re-copy the skills folder to your project:
**Linux/macOS:**
🤖 Prompt for AI Agents
In `@docs/README.antigravity.md` at line 110, Update the "Then re-copy the skills
folder to your project." instruction to include explicit platform-specific copy
commands: add a Unix/macOS/Linux cp command example to copy from
~/.gemini/antigravity/superpowers/skills into .agent/skills and a Windows
PowerShell Copy-Item -Recurse example using $env:USERPROFILE to source the same
path into .agent\skills so users have exact commands to run after pulling
updates.

Comment on lines +114 to +115
- Report issues: https://github.com/obra/superpowers/issues
- Main documentation: https://github.com/obra/superpowers
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Use proper markdown link syntax for URLs.

Bare URLs should be formatted with markdown link syntax for better accessibility and rendering.

📝 Suggested fix
 ## Getting Help
 
-- Report issues: https://github.com/obra/superpowers/issues
-- Main documentation: https://github.com/obra/superpowers
+- [Report issues](https://github.com/obra/superpowers/issues)
+- [Main documentation](https://github.com/obra/superpowers)
🧰 Tools
🪛 markdownlint-cli2 (0.18.1)

114-114: Bare URL used

(MD034, no-bare-urls)


115-115: Bare URL used

(MD034, no-bare-urls)

🤖 Prompt for AI Agents
In `@docs/README.antigravity.md` around lines 114 - 115, Replace the bare URLs
with proper Markdown link syntax: change "Report issues:
https://github.com/obra/superpowers/issues" to use a labeled link like "Report
issues: [Superpowers issues](https://github.com/obra/superpowers/issues)" and
change "Main documentation: https://github.com/obra/superpowers" to a labeled
link like "Main documentation: [Superpowers
repo](https://github.com/obra/superpowers)"; ensure both links render correctly
in README.antigravity.md.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants