-
-
Notifications
You must be signed in to change notification settings - Fork 3k
feat: Add Antigravity IDE integration #192
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
📝 WalkthroughWalkthroughAdds 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
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~2 minutes Poem
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ 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. Comment |
There was a problem hiding this 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
maxDepthvalues (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
textorplaintextas 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 -->
|
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) |
There was a problem hiding this 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
textorplaintextas the language identifier for consistency.🔎 Suggested fix
-``` +```text Run node ~/.antigravity/superpowers/.antigravity/superpowers-antigravity find-skills to show available skillsApply 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 usingincludes().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.searchPathis always constructed frompath.join(dir, actualSkillPath)whereactualSkillPathis 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
📒 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, andos.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.existsSynccheck 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=2while superpowers skills usemaxDepth=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?
.antigravity/superpowers-antigravity
Outdated
| 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(''); | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
.antigravity/superpowers-antigravity
Outdated
| // Remove "skills/" prefix if present | ||
| if (actualSkillPath.startsWith('skills/')) { | ||
| actualSkillPath = actualSkillPath.substring('skills/'.length); | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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 fileCommittable 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.
There was a problem hiding this 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
📒 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.
There was a problem hiding this 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.extractFrontmatteron line 45 can throw if the file is unreadable, which would crash the entire skill listing. Additionally, thenamevariable 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
skillNameis used to construct file paths without sanitization. A malicious skill name like../../etc/passwdcould 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.findSkillsInDirthrows 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
superpowersSkillsDirfrom 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.checkForUpdateson 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
📒 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
pathmodule 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:
- Run
superpowers-antigravity bootstrap- Run
superpowers-antigravity find-skills- Run
superpowers-antigravity use-skill superpowers:brainstormingEnsure path handling works correctly and no Windows-specific behaviors emerge.
…riting-plans skills
There was a problem hiding this 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 extractednamevariable 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/passwdcould 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
nodeprefixHowever, Line 80 (verification) uses
nodeprefix for both platforms. For consistency and reliability across different shell environments, consider explicitly usingnodefor 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.,
textorbash) 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
📒 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)
.antigravity/INSTALL.md
Outdated
| ### 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 | ||
| ``` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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-skillsLoading 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.
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 |
.antigravity/INSTALL.md
Outdated
| **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\" |
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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.
|
Just tried Antigravity and this. It works well on my end, but users need to change Terminal default profile first. Win 11 EDIT: |
.antigravity/INSTALL.md
Outdated
| **Linux/macOS:** | ||
| ```bash | ||
| mkdir -p ~/.gemini/antigravity/global_workflows | ||
| cp ~/.antigravity/superpowers/.antigravity/commands/*.md ~/.gemini/antigravity/global_workflows/ |
There was a problem hiding this comment.
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
|
Might be relevant, https://antigravity.google/docs/skills Ag release their own skill system |
There was a problem hiding this 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
textorplaintextas 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
📒 Files selected for processing (2)
.antigravity/INSTALL.mddocs/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.
| ```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 | ||
| ``` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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 -->
| ```bash | ||
| cd ~/.gemini/antigravity/superpowers | ||
| git pull | ||
| ``` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Refactored to support Antigravity's native Skills integration. |
- 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"
There was a problem hiding this 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. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
| 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.
| - Report issues: https://github.com/obra/superpowers/issues | ||
| - Main documentation: https://github.com/obra/superpowers |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
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:brainstormingwork correctlyBreaking Changes
None. This is a new integration that does not affect existing Claude Code, Codex, or OpenCode implementations.
Types of changes
Checklist
Additional context
The CLI script reuses
lib/skills-core.jsfor consistent skill discovery and parsing across all platformsSkills 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
✏️ Tip: You can customize this high-level summary in your review settings.