-
-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Add GitHub Copilot Agent Mode integration #218
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
Add support for GitHub Copilot Agent Mode, following the same pattern as the Codex integration (AGENTS.md + CLI tool). Files added: - .github-copilot/INSTALL.md - Installation instructions for both macOS/Linux and Windows - .github-copilot/superpowers-bootstrap.md - Bootstrap instructions injected via AGENTS.md - .github-copilot/superpowers-copilot - Node.js CLI for skill management (bootstrap, use-skill, find-skills) The CLI reuses the shared lib/skills-core.js module for skill discovery. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
📝 WalkthroughWalkthroughIntroduces GitHub Copilot Agent Skills support via a new Node.js CLI tool and comprehensive documentation. The CLI orchestrates skill discovery and loading from personal and superpowers directories, with bootstrap, use-skill, and find-skills commands. Includes installation guides for macOS/Linux and Windows, bootstrap instructions, and workflow rules. Changes
Sequence Diagram(s)sequenceDiagram
actor User
participant CLI as superpowers-copilot<br/>CLI
participant SkillsCore as skills-core<br/>Module
participant PersonalDir as Personal Skills<br/>Directory
participant SuperpowersDir as Superpowers Skills<br/>Directory
rect rgb(240, 248, 255)
Note over User,SuperpowersDir: Bootstrap Flow
User->>CLI: bootstrap
CLI->>SkillsCore: Check for updates
SkillsCore-->>CLI: Update status
CLI->>CLI: Read bootstrap.md
CLI-->>User: Print bootstrap instructions
CLI->>PersonalDir: Scan skills
CLI->>SuperpowersDir: Scan skills
SkillsCore-->>CLI: Skill list (personal + superpowers:)
CLI-->>User: Display available skills & naming rules
CLI->>SuperpowersDir: Load using-superpowers skill
CLI-->>User: Auto-load complete
end
rect rgb(240, 255, 240)
Note over User,SuperpowersDir: Use-Skill Flow
User->>CLI: use-skill [skill-name]
alt Namespaced skill (superpowers:)
CLI->>SuperpowersDir: Resolve superpowers:skill-name
else Plain skill name
CLI->>PersonalDir: Try resolve skill
alt Found in Personal
CLI->>PersonalDir: Read SKILL.md
else Not found, try superpowers
CLI->>SuperpowersDir: Resolve skill-name
CLI->>SuperpowersDir: Read SKILL.md
end
end
SkillsCore-->>CLI: Extract frontmatter (name, description)
CLI-->>User: Output formatted header + SKILL.md content
end
rect rgb(255, 250, 240)
Note over User,SuperpowersDir: Find-Skills Flow
User->>CLI: find-skills
CLI->>PersonalDir: Enumerate skills
CLI->>SuperpowersDir: Enumerate skills
SkillsCore-->>CLI: Consolidated skill list
CLI-->>User: Print personal skills + superpowers: prefixed skills
CLI-->>User: Display usage & naming conventions
end
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Poem
Pre-merge checks✅ Passed checks (5 passed)
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 (4)
.github-copilot/superpowers-copilot (1)
172-199: Missing loading message whensuperpowers:namespace is explicitly used.When
forceSuperpowersis true (user explicitly specifiedsuperpowers:prefix), the code doesn't print the "Loading superpowers skill" message that appears in the non-forced path (lines 193-197). This creates inconsistent user feedback.🔎 Proposed fix to add loading message for forced superpowers lookup
// If superpowers: namespace was used, only check superpowers skills if (forceSuperpowers) { if (fs.existsSync(superpowersSkillsDir)) { const superpowersPath = path.join(superpowersSkillsDir, actualSkillPath); skillFile = findSkillFile(superpowersPath); + if (skillFile) { + console.log(`# Loading superpowers skill: superpowers:${actualSkillPath}`); + console.log(`# Source: ${skillFile}`); + console.log(''); + } } } else {.github-copilot/INSTALL.md (3)
14-28: Inconsistent step numbering.The installation steps use numbered list items starting at "2." (line 28) and "3." (line 40), but the first step (git clone) at lines 14-26 is not numbered. This creates a formatting inconsistency.
🔎 Proposed fix to add consistent numbering
## Installation +1. **Clone the superpowers repository**: + **On macOS/Linux:** ```bash mkdir -p ~/.copilot/superpowers
81-90: Add language specifier to fenced code blocks.Per static analysis, these code blocks are missing language identifiers. Since the Usage section mentions using
$env:USERPROFILEon Windows, consider usingbashfor Unix commands.🔎 Proposed fix
Ask Copilot to run (use `$env:USERPROFILE` instead of `~` on Windows): -``` +```bash node ~/.copilot/superpowers/.github-copilot/superpowers-copilot find-skillsLoading a Skill
Ask Copilot to run (use
$env:USERPROFILEinstead of~on Windows):
-+bash
node ~/.copilot/superpowers/.github-copilot/superpowers-copilot use-skill superpowers:brainstorming
149-152: Format bare URLs as Markdown links.Per static analysis, bare URLs should be formatted as proper Markdown links for better rendering and accessibility.
🔎 Proposed fix
## Getting Help -- Report issues: https://github.com/obra/superpowers/issues -- Documentation: https://github.com/obra/superpowers +- Report issues: <https://github.com/obra/superpowers/issues> +- Documentation: <https://github.com/obra/superpowers>
📜 Review details
Configuration used: defaults
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (3)
.github-copilot/INSTALL.md.github-copilot/superpowers-bootstrap.md.github-copilot/superpowers-copilot
🧰 Additional context used
🪛 markdownlint-cli2 (0.18.1)
.github-copilot/INSTALL.md
81-81: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
88-88: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
151-151: Bare URL used
(MD034, no-bare-urls)
152-152: Bare URL used
(MD034, no-bare-urls)
🔇 Additional comments (7)
.github-copilot/superpowers-copilot (5)
1-14: LGTM!Path definitions are well-organized and clearly documented. The relative import to
skills-corecorrectly resolves from the.github-copilot/directory to the sharedlib/module at repository root.
16-34: LGTM!The function correctly handles path normalization for cross-platform consistency by replacing backslashes with forward slashes. The namespace prefixing logic for personal vs. superpowers skills is clear.
37-70: LGTM!The skill discovery logic correctly prioritizes personal skills over superpowers skills when names match, and the
Setprevents duplicate listings. The different depth parameters (2 vs 1) allow for flexible skill organization.
72-124: LGTM!The bootstrap flow is well-structured: update check → bootstrap instructions → skill listing → auto-load default skill. Error handling for file reads is appropriate, and the auto-loading of
using-superpowersgracefully falls back to listing available skills if not found.
241-267: LGTM!The CLI entry point is clean and straightforward. The switch-based command dispatch with a helpful default message follows standard CLI patterns.
.github-copilot/superpowers-bootstrap.md (1)
1-34: LGTM!The bootstrap instructions are comprehensive and well-structured. The tool mapping section effectively bridges the gap between Claude Code tools and Copilot's native capabilities. The emphatic directives are appropriate for ensuring consistent AI behavior.
.github-copilot/INSTALL.md (1)
1-152: LGTM!The installation guide is comprehensive with excellent cross-platform coverage. The troubleshooting section anticipates common issues and provides clear solutions. The documentation aligns well with the CLI implementation and bootstrap instructions.
|
Hi! I'm new to the "skills" ecosystem, but a friend recommended Superpowers and here I am. As far as I understand, in this PR you're configuring Copilot to use Superpowers skills via the AGENTS.md file at the project root. I initially thought I could call it directly from the IDE chat with something like:
I've tested and when I prompt especifically including, for example, "superpowers:brainstorm" it works for this prompt but don't use superpowers anymore, any others skills are invoked... Even if I start a new chat context, it won't call superpowers:brainstorm anymore. When I saw on README the basic workflow, I thought it should calls next skill on "pipe" automatically... Just want to make sure I understand the expected workflow correctly. |
|
I've tested superpowers using opencode (LLM copilot), it works completely different from my experience with copilot IDE, calling automatically each step of "planning" flow. Maybe this PR isn't working as expected. I'm using vscode insiders with experimental flag enabled |
Summary
.github-copilot/directory with installation docs, bootstrap instructions, and CLI script~) and Windows ($env:USERPROFILE) pathsFiles Added
.github-copilot/INSTALL.md.github-copilot/superpowers-bootstrap.md.github-copilot/superpowers-copilotHow It Works
~/.copilot/superpowers/AGENTS.mdnode superpowers-copilot bootstrapnode superpowers-copilot use-skill <name>The CLI reuses the shared
lib/skills-core.jsmodule for skill discovery.Fixes #217
Summary by CodeRabbit
Documentation
New Features
✏️ Tip: You can customize this high-level summary in your review settings.