Skip to content

Comments

feat: Add Factory Droid CLI support#139

Open
karol-f wants to merge 2 commits intoobra:mainfrom
karol-f:add-droid-support
Open

feat: Add Factory Droid CLI support#139
karol-f wants to merge 2 commits intoobra:mainfrom
karol-f:add-droid-support

Conversation

@karol-f
Copy link

@karol-f karol-f commented Dec 3, 2025

Add Factory Droid CLI support via documentation and install instructions, mirroring existing Codex/OpenCode patterns.

Motivation and Context

Factory Droid CLI uses the same Markdown + YAML conventions as Superpowers for skills, agents/droids, hooks, and
commands. This PR enables Droid CLI users to use Superpowers without any code changes—just documentation explaining
how to symlink existing files to Droid's discovery locations.

How Has This Been Tested?

  • Verified documentation structure matches existing Codex/OpenCode patterns
  • Confirmed all referenced paths and file formats align with Droid CLI conventions per Factory docs

Breaking Changes

None. This is additive documentation only. Existing Claude Code, Codex, and OpenCode setups are unaffected.

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

Files added/changed:

  • docs/README.droid.md - Full installation and usage guide
  • .factory/INSTALL.droid.md - Agent-executable install instructions
  • README.md - Added Factory Droid CLI section to installation

No code changes required—Superpowers skills, hooks, commands, and agents are already compatible with Droid's formats.
Integration is achieved entirely through symlinks and settings.json configuration as documented.

Summary by CodeRabbit

  • Documentation
    • Added a detailed installation guide for Factory Droid CLI with prerequisites, installation and verification steps, and notes on hook behavior.
    • Updated the main README to include Factory Droid CLI and link to the new guide.
    • Added expanded docs covering quick/manual install, skills/commands/droids usage, project-local setup, update procedures, troubleshooting, and support resources.

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

@coderabbitai
Copy link

coderabbitai bot commented Dec 3, 2025

Warning

Rate limit exceeded

@karol-f has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 12 minutes and 49 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

📥 Commits

Reviewing files that changed from the base of the PR and between 589d156 and bf1c4de.

📒 Files selected for processing (2)
  • .factory/INSTALL.droid.md (1 hunks)
  • docs/README.droid.md (1 hunks)

Walkthrough

Adds installation and documentation enabling Superpowers integration with the Factory Droid CLI: cloning and copying skills, creating command and droid symlinks, configuring a SessionStart hook or AGENTS.md bootstrap, verification steps, usage guidance, troubleshooting, and project-local/personal overrides.

Changes

Cohort / File(s) Summary
Factory Droid CLI Installation (new)
.factory/INSTALL.droid.md
New install guide with prerequisites, cloning Superpowers, copying skills, creating command and droid symlinks, configuring a SessionStart hook (example JSON), AGENTS.md fallback bootstrap, and verification steps.
Factory Droid CLI Documentation (new)
docs/README.droid.md
New comprehensive docs: Quick Install, Manual Installation steps (shell commands and JSON hook example), Usage (skills, commands, droids, personal skills), Project-local install, Updating, Troubleshooting, and Getting Help.
Root README update
README.md
Installation section updated to include Factory Droid CLI in tools requiring manual setup; adds a Factory Droid CLI subsection with a Tell Droid instruction block and links to the new docs.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

  • Check shell command examples and symlink creation in .factory/INSTALL.droid.md and docs/README.droid.md.
  • Validate JSON SessionStart hook snippet syntax and example file paths.
  • Verify links in README.md point to the new documentation files.

Poem

🐇 I hopped through folders, placed symlinks one by one,
Tuned droids to wake at SessionStart beneath the sun.
Skills copied swift, a tiny JSON tune,
Commands and droids now hum a cozy rune.
🥕✨

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'feat: Add Factory Droid CLI support' directly and accurately describes the main objective of the pull request, which is to add documentation and installation instructions enabling Factory Droid CLI integration with Superpowers.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

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 (4)
docs/README.droid.md (3)

9-11: Add language specifier to code block.

Line 9 fenced code block is missing a language identifier. Since this is a user instruction (text to tell Droid), use text as the language specifier.

-```
+```text
 Fetch and follow instructions from https://raw.githubusercontent.com/obra/superpowers/refs/heads/main/.factory/INSTALL.droid.md
-```
+```

109-111: Add language specifier to code block.

Line 109 fenced code block is missing a language identifier. Since this describes a user action (text instruction), use text as the language specifier.

-```
+```text
 Run the Task tool with subagent_type 'code-reviewer' to review the staged diff.
-```
+```

219-220: Wrap bare URLs in angle brackets for markdown compliance.

Lines 219–220 contain bare URLs. Wrap them in angle brackets to comply with markdown linting standards and improve readability.

 ## 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>
README.md (1)

84-84: Add language specifier to code block.

Line 84 fenced code block is missing a language identifier. Since this is a user instruction, use text as the language specifier.

 Tell Droid:
 
-```
+```text
 Fetch and follow instructions from https://raw.githubusercontent.com/obra/superpowers/refs/heads/main/.factory/INSTALL.droid.md
-```
+```
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 8462c20 and 02f08cf.

📒 Files selected for processing (3)
  • .factory/INSTALL.droid.md (1 hunks)
  • README.md (2 hunks)
  • docs/README.droid.md (1 hunks)
🧰 Additional context used
🪛 markdownlint-cli2 (0.18.1)
docs/README.droid.md

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

(MD040, fenced-code-language)


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

(MD040, fenced-code-language)


219-219: Bare URL used

(MD034, no-bare-urls)


220-220: Bare URL used

(MD034, no-bare-urls)

README.md

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

(MD040, fenced-code-language)

🔇 Additional comments (6)
.factory/INSTALL.droid.md (2)

46-63: JSON hook configuration is well-structured.

The SessionStart hook configuration correctly specifies matcher conditions, timeout, and command path. The structure aligns with Factory Droid CLI conventions.


1-77: Verify that referenced files exist in the Superpowers repository.

The installation guide references hooks/session-start.sh (line 55) and agents/code-reviewer.md (line 39) by symlink. Ensure these files exist in the Superpowers repository at the paths specified in the installation steps.

docs/README.droid.md (2)

84-88: Installation note update and Factory Droid CLI section look good.

The note clearly distinguishes between platforms, and the Factory Droid section follows the established pattern used for Codex and OpenCode, maintaining consistency across the documentation.


193-216: Troubleshooting section is practical and comprehensive.

The troubleshooting section covers the main pain points (skills, commands, droids, hooks) with clear verification steps. Excellent guidance for users debugging integration issues.

README.md (2)

29-29: Installation note clarification improves user guidance.

The updated note clearly communicates that installation steps differ by platform and explicitly mentions Factory Droid CLI alongside existing options. This helps users quickly identify the correct setup path.


80-88: New Factory Droid CLI section is well-structured and consistent.

The new section follows the established pattern used for Codex and OpenCode installations: it includes a fetch instruction for quick setup and links to comprehensive documentation. Placement and formatting are consistent.

@karol-f karol-f force-pushed the add-droid-support branch 2 times, most recently from 636c003 to fd622cc Compare December 3, 2025 11:25
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

🧹 Nitpick comments (4)
docs/README.droid.md (4)

59-82: Add guidance on handling existing symlinks and verifying hook setup.

The hook installation section lacks practical troubleshooting detail:

  • No mention of what to do if ~/.factory/settings.json already has existing SessionStart hooks (merge strategy unclear)
  • Line 82 mentions the bootstrap <EXTREMELY_IMPORTANT> block without explaining this is Factory Droid CLI markup syntax
  • No reminder to verify the script is executable after symlinking
  • Missing validation steps to confirm the hook is actually running

Suggestion: Add a note after the JSON block explaining the merge strategy and a verification step.


109-111: Clarify the Droids / code-reviewer usage.

Lines 109–111 mention "Run the Task tool with subagent_type 'code-reviewer'..." but don't explain:

  • Where/how this command is invoked in Droid's interface (a slash command, Task tool parameter, etc.)
  • What output or behavior to expect
  • Whether this requires the SessionStart hook to be configured first

Suggestion: Expand with a brief example or expected interaction pattern.


113-134: Clarify personal skill override behavior and namespace.

Lines 113–134 document creating personal skills in ~/.factory/skills/. The text states "Personal skills override superpowers skills with the same name," but:

  • It's unclear whether name matching is exact or prefix-based
  • No guidance on how to verify the override is active (e.g., which version Droid invokes)
  • The example uses my-skill but doesn't show how naming should relate to existing superpowers skills

Suggestion: Add clarification or an example showing a concrete override scenario.


193-215: Add troubleshooting steps for common symlink and permission issues.

The troubleshooting section covers basic checks (verify symlinks exist, check files, verify JSON syntax) but misses:

  • What to do if symlinks already exist when running install steps (should ln -s be re-run with -f, or check first?)
  • Permission errors when creating symlinks or running the hook script
  • How to handle the case where session-start.sh is not executable (step missing from main install)

Suggestion: Add a subsection for symlink/permission issues.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 02f08cf and fd622cc.

📒 Files selected for processing (3)
  • .factory/INSTALL.droid.md (1 hunks)
  • README.md (2 hunks)
  • docs/README.droid.md (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
  • .factory/INSTALL.droid.md
  • README.md
🔇 Additional comments (1)
docs/README.droid.md (1)

24-27: Remove embedded scratchpad markup, verification requests, and shell scripts from the review comment. The code snippet at lines 24-27 is a valid git clone command. The concerns about symlink patterns require access to the actual repository structure and Factory Droid CLI integration specifics, which are not available for verification. If you intend to flag issues with this documentation, provide concrete evidence (e.g., actual file paths, failing commands, or specific Factory Droid CLI requirements) rather than speculative directory structure assumptions.

Likely an incorrect or invalid review comment.

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)
docs/README.droid.md (2)

62-78: Fix JSON hook command syntax: remove unnecessary escaped quotes.

The Factory Droid CLI hook configuration schema specifies the command field as a plain string (not escaped quotes). Line 70 incorrectly uses escaped quotes and should be "command": "$HOME/.factory/superpowers/hooks/session-start.sh" instead.

         {
             "type": "command",
-            "command": "\"$HOME/.factory/superpowers/hooks/session-start.sh\"",
+            "command": "$HOME/.factory/superpowers/hooks/session-start.sh",
             "timeout": 5
         }

165-182: Fix JSON hook command syntax: remove unnecessary escaped quotes.

Line 174 has the same escaped quotes issue. Use "command": "$FACTORY_PROJECT_DIR/tools/superpowers/hooks/session-start.sh" instead.

             {
               "type": "command",
-              "command": "\"$FACTORY_PROJECT_DIR/tools/superpowers/hooks/session-start.sh\"",
+              "command": "$FACTORY_PROJECT_DIR/tools/superpowers/hooks/session-start.sh",
               "timeout": 5
             }
🧹 Nitpick comments (6)
docs/README.droid.md (6)

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

The code block lacks a language specifier. Mark it as text or sh for consistency and clarity.

-```
+```text
 Fetch and follow instructions from https://raw.githubusercontent.com/obra/superpowers/refs/heads/main/.factory/INSTALL.droid.md
-```
+```

107-107: Add language identifier to fenced code block.

Mark this code block with text or sh language identifier.

-```
+```text
 Run the Task tool with subagent_type 'code-reviewer' to review the staged diff.
-```
+```

121-121: Add language identifier to fenced code block.

The markdown template block should have a language identifier. Mark it as markdown.

-```
+```markdown
 ---
 name: my-skill
 description: Use when [condition] - [what it does]
 ---

 # My Skill

 [Your skill content here]
-```
+```

162-162: Fix indentation alignment.

Line 162 has extra leading whitespace. Align it with the preceding lines.

         mkdir -p .factory/droids
         cd .factory/droids
-  ln -s ../../tools/superpowers/agents/* .
+        ln -s ../../tools/superpowers/agents/* .

163-163: Add language identifier to fenced code block.

Mark the JSON configuration block with json language identifier.

-```
+```json
 {
   "hooks": {
     "SessionStart": [
       {
         "hooks": [
           {
             "type": "command",
             "command": "$FACTORY_PROJECT_DIR/tools/superpowers/hooks/session-start.sh",
             "timeout": 5
           }
         ]
       }
     ]
   }
 }
-```
+```

217-218: Wrap bare URLs in markdown links or inline code.

Replace bare URLs with markdown link syntax or inline code blocks for better formatting.

-## Getting Help

-- Report issues: https://github.com/obra/superpowers/issues
-- Main documentation: https://github.com/obra/superpowers
+## Getting Help

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

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f40f27b and 4966255.

📒 Files selected for processing (3)
  • .factory/INSTALL.droid.md (1 hunks)
  • docs/README.droid.md (1 hunks)
  • hooks/session-start.sh (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • .factory/INSTALL.droid.md
🧰 Additional context used
🪛 markdownlint-cli2 (0.18.1)
docs/README.droid.md

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

(MD040, fenced-code-language)


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

(MD040, fenced-code-language)


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

(MD040, fenced-code-language)


217-217: Bare URL used

(MD034, no-bare-urls)


218-218: Bare URL used

(MD034, no-bare-urls)

🔇 Additional comments (3)
hooks/session-start.sh (3)

3-3: Environment detection logic is solid.

The updated comment correctly reflects dual environment support. The implementation properly detects Droid vs. Claude Code via the FACTORY_PROJECT_DIR environment variable and outputs the appropriate format for each.


11-21: Proper environment detection and conditional logic.

The is_droid flag correctly identifies the Factory Droid environment, and the warning message is appropriately scoped to non-Droid environments only. The logic is clean and easy to follow.


26-69: Environment-specific output handling is well-implemented.

The dual-path logic is sound:

  • Droid receives plain-text output in an EXTREMELY_IMPORTANT block for direct parsing.
  • Claude Code receives properly JSON-escaped content with the hookSpecificOutput structure.
  • The escape_for_json function correctly handles all necessary escape sequences (backslash, quote, newline, carriage return, tab).
  • Content is consistently wrapped for both environments.

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

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

62-78: Fix JSON hook command syntax: remove escaped quotes (duplicate issue).

This issue was previously flagged. Line 70 incorrectly uses escaped quotes: "command": "\"$HOME/.factory/superpowers/hooks/session-start.sh\"". The command field should be a plain JSON string without inner escaped quotes.

-            "command": "\"$HOME/.factory/superpowers/hooks/session-start.sh\"",
+            "command": "$HOME/.factory/superpowers/hooks/session-start.sh",
🧹 Nitpick comments (4)
docs/README.droid.md (4)

9-11: Add language specifier to code block or reformat as markdown.

Lines 9–11 have a fenced code block without a language identifier. Either add text as the language or reformat this as a markdown code example/instruction.

-```
+```text
 Fetch and follow instructions from https://raw.githubusercontent.com/obra/superpowers/refs/heads/main/.factory/INSTALL.droid.md
-```
+```

107-109: Add language specifier to code block or reformat as markdown.

Lines 107–109 have a fenced code block without a language identifier. Add text as the language or reformat as a markdown code example.

-```
+```text
 Run the Task tool with subagent_type 'code-reviewer' to review the staged diff.
-```
+```

158-163: Add language specifier to code block.

Lines 158–163 have a fenced code block without a language identifier. Add bash as the language.

 4. **Symlink droids**:
-   ```
+   ```bash
    mkdir -p .factory/droids
    cd .factory/droids
   ln -s ../../tools/superpowers/agents/* .
-   ```
+   ```

215-218: Wrap bare URLs in markdown link syntax.

Lines 217–218 have bare URLs that should be wrapped in markdown link syntax for better readability and compliance with documentation standards.

 ## Getting Help
 
-- 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: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 4966255 and b72839c.

📒 Files selected for processing (2)
  • .factory/INSTALL.droid.md (1 hunks)
  • docs/README.droid.md (1 hunks)
🧰 Additional context used
🪛 markdownlint-cli2 (0.18.1)
docs/README.droid.md

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

(MD040, fenced-code-language)


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

(MD040, fenced-code-language)


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

(MD040, fenced-code-language)


217-217: Bare URL used

(MD034, no-bare-urls)


218-218: Bare URL used

(MD034, no-bare-urls)

🔇 Additional comments (3)
docs/README.droid.md (1)

29-38: Skills section is clear and consistent.

The copy-vs.-symlink explanation is helpful and aligns with the companion .factory/INSTALL.droid.md file.

.factory/INSTALL.droid.md (2)

10-25: Installation steps are clear and well-formatted.

The clone and skills installation instructions are consistent with the companion docs file and properly formatted.


67-79: Verification section is clear and actionable.

The verification steps provide good troubleshooting guidance and the bootstrap verification prompt is helpful for users to confirm proper setup.

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

🧹 Nitpick comments (4)
docs/README.droid.md (4)

9-11: Add language specifiers to fenced code blocks.

Lines 9, 120, and 176 have fenced code blocks without a language identifier. Add appropriate language tags to improve readability and enable syntax highlighting.

-```
+```bash
 Fetch and follow instructions from https://raw.githubusercontent.com/obra/superpowers/refs/heads/main/.factory/INSTALL.droid.md
-```
+```

-```
+```bash
 Run the Task tool with subagent_type 'code-reviewer' to review the staged diff.
-```
+```

-```json
+```json

Also applies to: 120-122, 176-176


84-93: Use proper heading syntax instead of bold text.

Line 84 uses bold formatting (**...**) for what is semantically a section subheading. Replace with proper markdown heading syntax.

-**AGENTS.md bootstrap (recommended fallback)**
+### AGENTS.md bootstrap (recommended fallback)

236-237: Convert bare URLs to markdown link format.

Lines 236–237 contain bare URLs that should be wrapped in markdown link syntax for better formatting and consistency.

-- 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)

214-216: Clarify troubleshooting step for skills detection.

Line 214 suggests running ls -la ~/.factory/skills to verify symlinks, but for skills verification, users should check that skill directories contain the required SKILL.md file. Update the troubleshooting guidance to be more explicit:

-### Skills not detected
-
-1. Verify symlinks: `ls -la ~/.factory/skills`
-2. Check skill files exist: `ls ~/.factory/superpowers/skills`
-3. Ensure each skill has a `SKILL.md` file
+### Skills not detected
+
+1. Verify skill directories exist: `ls -la ~/.factory/skills/`
+2. Check each skill has a `SKILL.md` file: `ls -1 ~/.factory/skills/*/SKILL.md`
+3. Confirm Superpowers skills were copied: `ls ~/.factory/superpowers/skills/`
+4. If using symlinks, verify they are readable: `ls -la ~/.factory/skills/`
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between b72839c and 3b9e337.

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

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

(MD040, fenced-code-language)


84-84: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


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

(MD040, fenced-code-language)


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

(MD040, fenced-code-language)


236-236: Bare URL used

(MD034, no-bare-urls)


237-237: Bare URL used

(MD034, no-bare-urls)

🔇 Additional comments (1)
docs/README.droid.md (1)

58-93: Clarify or document the origin and setup of the SessionStart hook script (session-start.sh).

Lines 70, 86, 186, and 231 reference ~/.factory/hooks/session-start.sh without explaining whether this file:

  • Exists in the superpowers repository at a discoverable path
  • Should be obtained from Factory Droid documentation or created by the user
  • Is expected to be created manually or generated by tooling

If this script is part of superpowers, provide explicit instructions to locate or copy it. If users must create it, link to Factory Droid's hooks documentation or provide a template/example showing the minimal required functionality.

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

🧹 Nitpick comments (4)
docs/README.droid.md (4)

9-10: Add language identifier to fenced code block (line 9).

The code block should specify a language identifier for proper syntax highlighting. Since this is a Tell Droid instruction (text input), use text as the language identifier.

-```
+```text
 Fetch and follow instructions from https://raw.githubusercontent.com/obra/superpowers/refs/heads/main/.factory/INSTALL.droid.md
-```
+```

119-123: Add language identifier to fenced code block (line 120).

The fenced code block at line 120 lacks a language identifier. Since this is an instruction note (not executable code), use text as the language identifier.

 Use the Task tool with `code-reviewer` to review code:
 
-```
+```text
 Run the Task tool with subagent_type 'code-reviewer' to review the staged diff.
-```
+```

84-84: Convert emphasis to heading for document structure (MD036).

Line 84 uses emphasis (**...**) instead of a proper heading. Since this introduces a subsection, convert it to a level 4 heading (####).

-**AGENTS.md bootstrap (recommended fallback)**
+#### AGENTS.md bootstrap (recommended fallback)

234-237: Wrap bare URLs in markdown link syntax (MD034).

Lines 236–237 contain bare URLs that should be formatted as markdown links for better readability and document structure.

 ## Getting Help
 
-- 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: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 3b9e337 and 294027c.

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

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

(MD040, fenced-code-language)


84-84: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


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

(MD040, fenced-code-language)


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

(MD040, fenced-code-language)


236-236: Bare URL used

(MD034, no-bare-urls)


237-237: Bare URL used

(MD034, no-bare-urls)

🔇 Additional comments (2)
docs/README.droid.md (2)

178-195: Clarify project-local hook script location and path.

For project-local installations, line 187 references ~/.factory/hooks/session-start.sh (global path), but the rest of the project-local section uses .factory/ (project-local paths). Clarify whether the hook script should be:

  • Placed in the project's .factory/hooks/ directory (use a project-relative path), or
  • Still sourced from the global ~/.factory/hooks/ directory.

If project-local, the command path should be updated to reflect the project-relative location.

Can you confirm whether project-local SessionStart hooks should use a project-local script path (e.g., .factory/hooks/session-start.sh via $FACTORY_PROJECT_DIR) or continue to reference the global hook location?


1-11: Overall documentation approval with minor linting fixes needed.

The documentation successfully provides clear, comprehensive guidance for Factory Droid CLI integration with Superpowers. The previous critical issues with JSON hook configuration (syntax errors, missing SessionStart wrapper) have been properly resolved. The installation steps are logically organized, and fallback mechanisms (AGENTS.md bootstrap) are well-documented.

A few minor improvements remain:

  1. Fix markdown linting issues (missing language identifiers, emphasis vs. heading, bare URLs).
  2. Resolve contradictory troubleshooting guidance about skills symlinks.
  3. Clarify project-local hook script path expectations.

Beyond these minor refinements, the documentation is ready for publication.

@karol-f karol-f force-pushed the add-droid-support branch 2 times, most recently from 883610d to 589d156 Compare December 3, 2025 17:11
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 (1)
docs/README.droid.md (1)

124-131: ⚠️ Contradictory troubleshooting guidance—still unresolved from past review.

Line 38 explicitly states: "Skills must be copied (not symlinked) as Droid CLI doesn't recognize symlinked skills." However, the troubleshooting section at line 128 instructs users to "Verify symlinks" for ~/.factory/skills. This contradicts the documented installation process. Update the troubleshooting step to verify that skills are present as copied directories rather than symlinks.

Apply this diff to fix the guidance:

 ### Skills not detected
 
-1. Verify symlinks: `ls -la ~/.factory/skills`
-2. Check skill files exist: `ls ~/.factory/superpowers/skills`
-3. Ensure each skill has a `SKILL.md` file
+1. Verify skills are copied: `ls -la ~/.factory/skills`
+2. Check source skill files exist: `ls ~/.factory/superpowers/skills`
+3. Ensure each skill has a `SKILL.md` file
🧹 Nitpick comments (3)
docs/README.droid.md (3)

9-11: Add language identifier to code fences for consistency.

Code blocks at lines 9–11 and 120 lack language identifiers (e.g., bash or text). While this doesn't affect functionality, adding language tags improves readability and enables syntax highlighting.

Example fix for line 9:

-```
+```text
 Fetch and follow instructions from https://raw.githubusercontent.com/obra/superpowers/refs/heads/main/.factory/INSTALL.droid.md
-```
+```

Repeat for line 120 with appropriate language tag (e.g., text or blank if it's a generic shell interaction).


84-84: Use heading markdown instead of bold emphasis.

Line 84 uses bold (**AGENTS.md bootstrap...**) as a section divider. For better document structure and consistency with the rest of the guide, use a markdown heading (e.g., #### AGENTS.md Bootstrap (Fallback or Alternative)).

-**AGENTS.md bootstrap (recommended fallback if above hook is not working)**
+#### AGENTS.md Bootstrap (Fallback or Alternative)

148-151: Bare URLs should be wrapped in markdown links.

Lines 150–151 use bare URLs without link syntax. Wrap them in markdown link format for better formatting and discoverability.

 ## 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](https://github.com/obra/superpowers/issues)
+- Main documentation: [https://github.com/obra/superpowers](https://github.com/obra/superpowers)
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 294027c and 589d156.

📒 Files selected for processing (2)
  • .factory/INSTALL.droid.md (1 hunks)
  • docs/README.droid.md (1 hunks)
🧰 Additional context used
🪛 markdownlint-cli2 (0.18.1)
docs/README.droid.md

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

(MD040, fenced-code-language)


84-84: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


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

(MD040, fenced-code-language)


150-150: Bare URL used

(MD034, no-bare-urls)


151-151: Bare URL used

(MD034, no-bare-urls)

🔇 Additional comments (5)
.factory/INSTALL.droid.md (2)

47-63: ✅ JSON hook syntax is now correct.

The SessionStart hook configuration has been properly fixed from the previous review—the command field is now a plain JSON string without unnecessary escaping: "command": "sh ~/.factory/superpowers/hooks/session-start.sh". The structure correctly wraps the hooks within the SessionStart event and aligns with the Factory Droid CLI configuration schema.


12-45: Installation flow is clear and well-structured.

The step-by-step installation instructions (clone, copy skills, symlink commands/droids, configure hook, AGENTS.md fallback) are logical and align with Droid CLI discovery conventions. The distinction between copying skills (line 22) versus symlinking commands and droids (lines 32, 40) is properly documented and matches the earlier note at line 25 explaining why skills cannot be symlinked.

docs/README.droid.md (3)

62-78: ✅ JSON hook syntax is now correct.

The SessionStart hook configuration has been fixed from the previous review—the command field is now properly formatted as a plain JSON string: "command": "sh ~/.factory/superpowers/hooks/session-start.sh". The overall structure correctly wraps the hooks within the SessionStart event and aligns with the Factory Droid CLI configuration schema.


1-95: Installation and bootstrap workflow is comprehensive and well-documented.

The manual installation steps (clone, copy skills, symlink commands/droids, SessionStart hook, AGENTS.md fallback) are logically sequenced and clearly explain the rationale for each approach (e.g., why skills must be copied vs. symlinked). The dual-path bootstrap strategy (hook + AGENTS.md fallback) is practical and addresses Droid CLI version inconsistencies.


1-151: Unable to verify file completeness — repository access required.

The verification script could not execute due to repository access limitations in the sandbox environment. However, the provided snippet shows lines 1-151 ending with an incomplete sentence ("Alternatively copy"), which suggests the file may continue beyond the visible excerpt. Past review comments reference lines 174-195, which fall outside the provided snippet range.

To complete this verification, please:

  1. Confirm the total line count of docs/README.droid.md
  2. Provide the full file content or content at lines 174-195 to assess past review issues
  3. Verify that the incomplete sentence at line 151 has been resolved


> Note: Some Droid CLI versions log `SessionStart` hook output but do not inject its `additionalContext` into the model. If you do not see the "You have superpowers" bootstrap text when you ask Droid about superpowers, you can use an AGENTS.md-based bootstrap instead of, or in addition to, the hook.

### 6. AGENTS.md Bootstrap (Fallback or Alternative)
Copy link
Owner

Choose a reason for hiding this comment

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

@karol-f Thanks so much for your work on this. I don't love the manual AGENTS.md thing since factory has hooks. This shouldn't be necessary.

@obra
Copy link
Owner

obra commented Dec 3, 2025

Other than the AGENTS.md thing, my biggest worry about this is upgrades. Because we're copying files rather than linking them and factory doesn't have a way for us to use our own directory structure, it feels like upgrades are going to be nearly impossible. Any ideas about how best to handle that?

@karol-f
Copy link
Author

karol-f commented Dec 4, 2025

Hi @obra , this is indeed a good question about updating. We might reach out to Factory Droid to ask about symlinked skills not being recognised, or create a script for you to run that will do all the work.

But for now, consider adding this as proof-of-concept Droid CLI integration as it can already help a lot and allow new audience using "superpowers". Regards!

Copy link

@NehaShakoor NehaShakoor left a comment

Choose a reason for hiding this comment

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

AI Code Review: add-droid-support -> main

No critical issues found by the AI. The changes look solid based on the provided guidelines.

@obra obra added new-harness Requests for harnesses with few existing items enhancement New feature or request labels Feb 5, 2026
@obra obra added the factory Factory/Droid CLI integration label Feb 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request factory Factory/Droid CLI integration new-harness Requests for harnesses with few existing items

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants